欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

sklearn逻辑回归案例分析 《良/恶性乳腺癌肿瘤预测》

程序员文章站 2022-07-14 13:03:36
...

由于对逻辑回归等算法做到深刻理解有点难,目前还在学习中,尽管有现成的模型库,我们还是需要对模型的底层实现有一个了解。这里先记录一下如何利用sklearn的LogisticRegression来做一个简单的实现。后续深入了解了,再做分享(现在只懂皮毛)。

逻辑回归是分类模型哦:逻辑回归实际上是利用sigmoid函数将线性回归进行了归一化,把输出值压缩到了0-1之间,这个值代表的是事件发生的概率

下面通过一个案例来进行分析:《良/恶性乳腺癌肿瘤预测》

这是一个已经提供了的数据集,地址:https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/

数据预处理:

import pandas as pd
import numpy as np

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']
data = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin//breast-cancer-wisconsin.data',names=column_names)

data = data.replace(to_replace='?',value=np.nan)    #非法字符的替代
data = data.dropna(how='any')        #去掉空值,any:出现空值行则删除
print(data.shape)
print(data.head())

sklearn逻辑回归案例分析 《良/恶性乳腺癌肿瘤预测》

预处理后的数据集如上图683行,11列,特征包括细胞厚度、细胞大小、形状等九个维度

准备预测数据集:

from sklearn.cross_validation import train_test_split
X_train,X_test,y_train,y_test = train_test_split(data[column_names[1:10]],data[column_names[10]],test_size=0.25,random_state=5)

使用train_test_split方法分割数据集为训练集和测试集。但如果为男女类这样的数据集,最好先分类再对分类结果做一个分割数据集,确保数据分割均匀。

使用逻辑回归来预测 良/恶性肿瘤:

from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression

ss = StandardScaler()   #标准化数据,保证每个维度的特征数据方差为1,均值为0.使得预测结果不会被某些维度过大的特征值主导
X_train = ss.fit_transform(X_train)    #先拟合,在转换
X_test = ss.transform(X_test)        #上面拟合过,这里直接转换

lr = LogisticRegression(C=1.0,penalty='l1',tol=0.1)    #调用逻辑回归模型,里面的参数可以自己设置,通过交叉验证来判断最优参数,我前面文章有介绍
lr.fit(X_train,y_train)    #使用上面标准化后的数据来训练
lr_predict = lr.predict(X_test)       #得到预测结果

这里使用l2penalization也可以

结果分析:

from sklearn.metrics import accuracy_score
print("预测结果为:{}".format(lr.score(X_test,y_test)))
print("预测结果为:{}".format(accuracy_score(y_test,lr_predict)))
这里可以使用自带的score计算分数,也可以使用accuracy_score来计算

sklearn逻辑回归案例分析 《良/恶性乳腺癌肿瘤预测》


以上为使用sklearn中的逻辑回归模型来做预测的简单例子,并未涉及太多的底层数学知识,有兴趣的朋友可以查一下相关逻辑回归原理的资料。

参考博客:这里讲很不错,也很细