导包
import numpy as np import pandas as pd
处理数据
创建特征列表
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') print(data.shape) # (683,11) 筛选后还有683条数据,维度是11
分割数据
# 分割模块 一个训练一个测试 from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression 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=33)
train_test_split函数第一个参数是样本特征集,第二个参数是所要划分的样本结果,第三个是样本占比,如果是整数的话就是样本的数量,第四个参数是随机种子数,保证得到一组一样的随机数,填0则
每次都不一样。
训练数据
逻辑斯特回归
在训练数据之前我们还需要把data变成正态分布,减小方差
from sklearn.preprocessing import StandardScaler # 从sklearn.linear_model里导入LogisticRegression与SGDClassifier。 from sklearn.linear_model import LogisticRegression from sklearn.linear_model import SGDClassifier ss = StandardScaler() X_train = ss.fit_transform(X_train) X_test = ss.transform(X_test) # 把data变成正态分布,减小方差
我们先用逻辑斯特回归里面的函数来训练样本
lr = LogisticRegression() # 调用LogisticRegression中的fit函数/模块用来训练模型参数。 lr.fit(X_train, y_train) # 使用训练好的模型lr对X_test进行预测,结果储存在变量lr_y_predict中。 lr_y_predict = lr.predict(X_test) print(lr_y_predict)
逻辑斯特回归预测结果:
导入评分系统
# 从sklearn.metrics里导入classification_report模块。 对预测结果进行评分 from sklearn.metrics import classification_report
用评分函数测试准确性;用classification_report函数获取其他性能指标
print(lr.score(X_test, y_test)) print(classification_report(y_test, lr_y_predict, target_names=['Benign', 'Malignant']))
随机梯度下降分类器
我们用随机梯度下降分类器算法来训练样本
sgdc = SGDClassifier() # 调用SGDClassifier中的fit函数/模块用来训练模型参数。 sgdc.fit(X_train, y_train) # 使用训练好的模型sgdc对X_test进行预测,结果储存在变量sgdc_y_predict中。 sgdc_y_predict = sgdc.predict(X_test) print(sgdc_y_predict)
sgdc模型预测结果:
用评分函数测试准确性;用classification_report函数获取其他性能指标
print(sgdc.score(X_test, y_test)) print(classification_report(y_test, sgdc_y_predict, target_names=['Benign', 'Malignant']))