【零基础学习机器学习】逻辑回归

逻辑回归的介绍  

应用场景:

  • 广告点击率
  • 是否为垃圾邮件
  • 是否患病
  • 金融诈骗
  • 虚假账号

逻辑回归是解决二分类问题的利器

能得出概率值

逻辑回归:用线性回归的式子作为输入

sigmoid函数

函数特点:把数据转换成0-1之间的值,刚好和概率相似

逻辑回归公式

注:z表示回归方程的结果

逻辑回归的损失函数、优化

损失函数:

1、均方误差

不存在多个局部最低点,只有一个最小值

2、对数似然损失

存在多个局部最小值

找最小值解决方案:

目前无法直接找到最小值,只能不断去训练寻找最小值

1、多次随机初始化,多次比较最小值结果

2、求解过程中,调整学习率(从一个点开始找,有可能直接跳过高点继续找)

尽管没有全局最低点,但是效果都是不错的。

API

sklearn.linear_model.LogisticRegression

注:penalty正则化,C代表正则化力度

逻辑回归也像岭回归一样,可以防止过拟合。

回归案例

良/恶性乳腺癌肿瘤预测

原始数据的下载地址:

https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/

数据描述:

  • 数据样例:

  • 案例分类预测流程:

1、网上获取数据(工具pandas)

2、数据缺失值处理、标准化

3、LogisticRegression估计器流程

案例

from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression, SGDRegressor, Ridge, LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_squared_error, classification_report
from sklearn.externals import joblib
import pandas as pd
import numpy as np


'''
    1.样品编号ID编号
    2.团块厚度1-10
    3.像元大小的均匀性1-10
    4.细胞形状的均匀性1-10
    5.边缘附着力1-10
    6.单上皮细胞大小1-10
    7.裸核1-10
    8.淡色染色质1-10
    9.正常核仁1-10
    10.线粒体1-10
    11.等级:(2代表良性,4代表恶性)
'''
def logistic():
    '''
    逻辑回归做二分类问题,进行癌症预测(根据细胞的属性特征)
    :return:
    '''
    # TODO 构造列标签名字
    column = ['Sample code number','Clump Thickness','Uniformity of Cell Size','Uniformity of Cell Shape','Marginal Adhesion','Single Epithelial Cell Size','Bare Nuclei','Bland Chromatin','Normal Nucleoli','Mitoses','Class']

    # TODO 读取数据
    data = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data", names=column)
    # print(data)
    '''
         Sample code number  Clump Thickness  ...  Mitoses  Class
    0               1000025                5  ...        1      2
    1               1002945                5  ...        1      2
    2               1015425                3  ...        1      2
    '''

    # TODO 缺失值处理
    data = data.replace(to_replace='?', value=np.nan)
    data = data.dropna()

    # TODO 进行数据的分割    特征值,目标值
    x_train,x_test,y_train,y_test = train_test_split(data[column[1:10]],data[column[10]],test_size=0.25)

    # TODO 进行标准化处理
    std = StandardScaler()
    x_train = std.fit_transform(x_train)
    x_test = std.transform(x_test)

    # TODO 逻辑回归预测
    lg = LogisticRegression(C=1.0)   # C 正则化力度
    lg.fit(x_train, y_train)
    y_predict = lg.predict(x_test)

    print("特征的权重", lg.coef_)
    print("准确率:", lg.score(x_test, y_test))
    print("召回率:", classification_report(y_test, y_predict, labels=[2, 4], target_names=["良性", "恶性"]))
    '''
                 precision    recall  f1-score   support

          良性       0.98      0.96      0.97       110
          恶性       0.94      0.97      0.95        61
    '''
    return


if __name__ == '__main__':
    logistic()

总结

softmax方法 - 逻辑回归在多分类问题上的推广

生成模型和判别模型

先验概率:需要提前在数据中获取某个类别的概率,总结历史数据的概率

生成模型:有先验概率

判别模型:没有先验概率

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值