机器学习 -逻辑回归肿瘤分类

本文介绍了一种使用线性分类器预测乳腺癌良性与恶性的方法,通过处理数据集、特征选择、模型训练与验证,展示了Logistic Regression与SGD Classifier的性能。在10万级数据上,SGD Classifier表现更优。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本博客内容来自《PYTHON机器学习及实践-从零开始通往KAGGLE竞赛之路》一书

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
#使用线性分类器预测
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.linear_model import SGDClassifier

#创建特征列表
columns_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=columns_names)

#将?替换为标准缺失值表示
data = data.replace(to_replace='?',value=np.nan)
#丢弃带有缺失值的数据(只要有一个维度有缺失)
data = data.dropna(how='any')
data.head()

原始数据

#随机采样25%用于测试
X_train,X_test,y_train,y_test = train_test_split(data[columns_names[1:10]],data[columns_names[10]],test_size=0.25,random_state=33)

#将数据归一化
ss = StandardScaler()
X_train = ss.fit_transform(X_train)
X_test = ss.fit_transform(X_test)

lr = LogisticRegression()
sgdc = SGDClassifier()

#调用LogisticRegression的fit函数训练模型参数
lr.fit(X_train,y_train)
#使用训练好的模型lr对X_test进行预测
lr_y_predict = lr.predict(X_test)
#调用SGDClassifier 中的fit函数进行训练
sgdc.fit(X_train,y_train)
sgdc_y_predict=sgdc.predict(X_test)

from sklearn.metrics import classification_report
print('Accuracy of LR Classifier:',lr.score(X_test,y_test))
print(classification_report(y_test,lr_y_predict,target_names=['Benign','Malignant']))
Accuracy of LR Classifier: 0.9707602339181286
              precision    recall  f1-score   support

      Benign       0.96      0.99      0.98       100
   Malignant       0.99      0.94      0.96        71

   micro avg       0.97      0.97      0.97       171
   macro avg       0.97      0.97      0.97       171
weighted avg       0.97      0.97      0.97       171
print('Accuracy of SGD Classifier:',sgdc.score(X_test,y_test))
print(classification_report(y_test,sgdc_y_predict,target_names=['Benign','Malignant']))
Accuracy of SGD Classifier: 0.9824561403508771
              precision    recall  f1-score   support

      Benign       0.99      0.98      0.98       100
   Malignant       0.97      0.99      0.98        71

   micro avg       0.98      0.98      0.98       171
   macro avg       0.98      0.98      0.98       171
weighted avg       0.98      0.98      0.98       171
线性分类器可以说是最为基本和常用的机器学习模型,尽管其受限于数据特征与分类目标之间的线性假设,
我们仍然可以在科学研究与工程实践中吧线性分类器的表现性能作为基准,这里所使用的模型包括LogisticRegression与
SGDClassifier,一般而言对于训练数据规模在10W量级以上的数据考虑到时间的耗用,更推荐使用随机梯度算法对模型参数进行评估
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值