zoukankan      html  css  js  c++  java
  • 【机器学习】---逻辑回归从初识到应用

    一、前述

    逻辑回归是一种分类算法,对多元线性回归的结果做一定的缩放。是一种线性(x是一次的)有监督(有x,y)分类(要么是正列,要么是负例)算法。是通过sigmod算法的一次缩放。

    sigmod函数解释如下:

     

    二、具体原理

    前提和损失函数推倒:

    -->转化为似然的思想:

    -->对转换后的似然函数求偏导:

    -->求完导数后,确定方向后

    逻辑回归损失函数:

     

    如果最后预测的结果大于0.5(默认)是正例 小于0.5是负例

    做分类的误差来源于两种情况:

    假设Y是正列 1-p^

    假如本来是1这个类别:预测出来的结果是0.6则预测对了预测的误差是1-0.6=0.4

    假如本来是1这个类别:预测出来的结果是0.1 则误差1-0.1=0.9

    假设是负例p^

    假设预测出来的是0.1 则误差是0.1

    假设预测出来的是0.6 则误差是0.6

    三、代码

    #逻辑回归预测鸢尾花,根据花瓣的宽度
    import numpy as np
    from sklearn import datasets
    from sklearn.linear_model import LogisticRegression
    import matplotlib.pyplot as plt
    
    
    iris = datasets.load_iris()# 鸢尾花数据集
    print(list(iris.keys()))
    print(iris['DESCR'])#数据集的描述
    print(iris['feature_names'])#数据集的特证名字 #150条数据 三种花 每种花50条数据
    #根据花的花瓣,花萼,花蕊来分类
    X = iris['data'][:, 3:] # 逗号左边第一行到所有行 ,逗号右边第3列开始到最后 总共4列 实际上就是最后一列
    # print(X)
    print(iris['target'])
    y = (iris['target'] == 2).astype(np.int)
    print(y) #保留类别为2的花。
    
    
    log_reg = LogisticRegression()#构建逻辑回归
    log_reg.fit(X, y)#根据最后一个花瓣的宽度来预测
    
    X_new = np.linspace(0, 3, 1000).reshape(-1, 1)#0-3之间切分1000次
    print(X_new)
    y_proba = log_reg.predict_proba(X_new)#预测的概率 给一个0-1之间的一个概率值
    y_hat = log_reg.predict(X_new)#预测的结果
    print(y_proba)
    print(y_hat)
    plt.plot(X_new, y_proba[:, -1], 'g-', label='Iris-Virginica')
    plt.plot(X_new, y_proba[:, 0], 'b--', label='Not Iris-Virginica')
    plt.show()
    
    print(log_reg.predict([[1.7], [1.5]]))
    #PS 对应1.6的时候正列结果是鸢尾花 #小于1.6的时候是负例不是鸢尾花

    PS:1.6是正负例的交界。

    四、逻辑回归做多分类算法

    1、原理

    2、结论

    如果我们做三分类的话,相当于这里并行计算出三个独立的模型

    谁的概率最大,最终就判定为哪个类别

     五、阈值修改

    根据需求的变通 去除固定阈值0.5
    • 癌症病人的判断?
    • 假如病人是癌症:
    – 判断成不是癌症
    • 假如病人是非癌症
    – 判断是癌症
    • 0.3(这里调小了,所以负例少了,则本来不是癌症,最后预测的是癌症)

    调阈值是在真正测试的时候调整的,训练的时候不调整
    • 虽然整体的错误率变大了,但是规避了一些不能接受的风险

  • 相关阅读:
    客户端用不用bind的区别
    软件项目开发流程
    很强大的几个网站
    MIS系统的 5个基本模块
    asp.net 生成导出word表单 ,导出excel; dataTable生成xls文件,返回前台下载;asp.net启动excel错误 80070005;excelxls columnName 不能改变; 读写excel的开源利器NPOI; 设置excel Cell的数据类型;
    正则快速入门
    asp.net 服务端调用客户端脚本; asp.net 服务端将文件传给客户端; reponse.ContentType的取值;用OutputStream.Write返回文件,效率是WriteFile的10倍;download link click和OutputStream的比较;
    常用编辑
    数据库流程图设计
    scroll位置控制 window的和div的
  • 原文地址:https://www.cnblogs.com/LHWorldBlog/p/8319502.html
Copyright © 2011-2022 走看看