【机器学习】逻辑回归—良/恶性乳腺癌肿瘤预测

逻辑回归—良/恶性乳腺癌肿瘤预测

  • 逻辑回归的损失函数、优化
    与线性回归原理相同,但由于是分类问题,损失函数不一样,只能通过梯度下降求解
    sklearn逻辑回归API
sklearn.linear_model.LogisticRegression
  • LogisticRegression
sklearn.linear_model.LogisticRegression(penalty=‘l2’, C = 1.0)
Logistic回归分类器
coef_:回归系数
  • 只能解决二分类问题:

    广告点击率

    判断用户的性别

    预测用户是否会购买给定的商品类

    判断一条评论是正面的还是负面的


LogisticRegression回归案例-良/恶性乳腺癌肿瘤预测

良/恶性乳腺癌肿数据
原始数据的下载地址:
https://archive.ics.uci.edu/ml/machine-learning-databases/
在这里插入图片描述
7.#属性域
------------------------------------------
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代表恶性)

8.缺少属性值:16

第1到第6组中的16个实例包含一个缺失项
(即不可用)属性值,现在用“?”表示。

9.班级分布:

良性:458(65.5%)
恶性:241(34.5%)

此处恶性为正例,良性为反例。
哪一个类别少,判定概率值是这个类别!
在这里插入图片描述


  • 数据描述
    (1)699条样本,共11列数据,第一列用语检索的id,后9列分别是与肿瘤
    相关的医学特征,最后一列表示肿瘤类型的数值。
    (2)包含16个缺失值,用”?”标出。

  • pandas使用

pd.read_csv(’’,names=column_names)
column_names:指定类别名字,['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']
return:数据

replace(to_replace=’’,value=):返回数据
dropna():返回数据
  • 良/恶性乳腺癌肿分类流程
    1、网上获取数据(工具pandas)
    2、数据缺失值处理、标准化
    3、LogisticRegression估计器流程
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
import pandas as pd
import numpy as np
def logistic():
    """
    逻辑回归做二分类进行癌症预测(根据细胞的属性特征)
    :return: NOne
    """
    # 构造列标签名字
    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']

    # 读取数据
    data = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data", names=column)

    print(data)

    # 缺失值进行处理
    data = data.replace(to_replace='?', value=np.nan)
    #删除
    data = data.dropna()
    
    # 进行数据的分割
    x_train, x_test, y_train, y_test = train_test_split(data[column[1:10]], data[column[10]], test_size=0.25)
    #1-10列是特征值,最后一列10代表11列目标值
    
    # 进行标准化处理
    std = StandardScaler()

    x_train = std.fit_transform(x_train)
    x_test = std.transform(x_test)

    # 逻辑回归预测
    lg = LogisticRegression(C=1.0)

    lg.fit(x_train, y_train)

    print(lg.coef_)

    y_predict = lg.predict(x_test)

    print("准确率:", lg.score(x_test, y_test))

    print("召回率:", classification_report(y_test, y_predict, labels=[2, 4], target_names=["良性", "恶性"]))

    return None


if __name__ == "__main__":
    logistic()
[699 rows x 11 columns]
[[1.35467578 0.18001121 0.74721681 0.89447017 0.38691172 1.26415265
  0.95382046 0.53218847 0.51240579]]
准确率: 0.9707602339181286
召回率:               precision    recall  f1-score   support

          良性       0.97      0.98      0.98       112
          恶性       0.97      0.95      0.96        59

    accuracy                           0.97       171
   macro avg       0.97      0.97      0.97       171
weighted avg       0.97      0.97      0.97       171

版权声明:本文为weixin_45334823原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。