书是python机器学习及实践_从零开始通往kaggle之路
书上的准确率:0.9+ 我的只有0.8+ 不知道怎么肥事
还有这本书为什么要把产品编号也作为一个特征啊?
代码如下(python 3):
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import accuracy_score
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import SGDClassifier
#创建特征列表
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']
#采用read_csv函数读取文件,默认用逗号分隔数据
data = pd.read_csv('d:/breast-cancer-wisconsin.data', names=column_names, delimiter=',')
#将?替换为标准缺失值表示
data = data.replace(to_replace='?', value=np.nan)
#删除有空值的行
data = data.dropna(how='any')
#将前10列选为特征。
X = data[column_names[1:10]]
#将Class命名的列取出作为待预测的类别。
y = data[column_names[10]]
# 25%的数据作测试集,75%的数据作训练样本。random_state设定为2019,为了保证每次重新运行获得的训练集和测试集是一样的。
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=2019)
#标准化数据
ss=StandardScaler()
X_train=ss.fit_transform(X_train)
X_test=ss.transform(X_test)
# 初始化逻辑斯蒂回归模型和随机梯度参数模型
lr = LinearRegression()
sgdc= SGDClassifier ()
#调用 LinearRegression中的fit函数用来训练模型参数。
lr.fit(X_train, y_train)
#使用训练好的模型lr对X_test进行预测,结果储存在变量lr_y_predict中。
lr_y_predict=lr.predict (X_test)
#调用SGDClassifier中的fit函数用来训练模型参数。
sgdc.fit(X_train, y_train)
#使用训练好的模型sgdc对X_test进行预测结果储存在变量sgdc_y_predict中。
sgdc_y_predict=sgdc.predict(X_test)
#使用逻辑斯蒂回归模型自带的评分函数score获得模型在测试集上的准确性结果。
print('Accuracy of LR Classifier:', lr.score(X_test, y_test))
print('Accuracy of SGDClassifier:', sgdc.score(X_test, y_test))