良/恶性乳腺癌肿瘤数据预处理
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') #丢弃带有缺失值的数据 print(data.shape) #输出数据的数据量 out: (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=33) print(y_train.value_counts()) print(y_test.value_counts())
使用线性分类器进行性能分析#使用线性分类模型从事良/恶性肿瘤预测任务 from sklearn.preprocessing import StandardScaler 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) #训练 lr = LogisticRegression() sgdc = SGDClassifier() lr.fit(X_train, y_train) sgdc.fit(X_train, y_train) print(lr.predict(X_test)) print(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_predict, target_names=['Benign','Malignant'])) print('Accuracy of SGD Classifier:', sgdc.score(X_test, y_test)) print(classification_report(y_test, sgdc_predict, target_names=['Benign','Malignant']))
输出结果可知,逻辑回归比梯度下降法在测试集上表现有更高的准确性。衡量分类性能的参数通常有精确度(precision)、召回率(recall)、F1指标(f1-score)、