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‘]))