
1. 需求分析预测患者病情是恶性还是良性。2. 数据说明csv文件699条样本11个字段9个特征1个标签Class。包含16个缺失值数据中用“?”表示Class中2为良性4为恶性。该案例中以4为正例。3. 建模import numpy as np import pandas as pd from matplotlib import pyplot as plt from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression # 逻辑回归 from sklearn.preprocessing import StandardScaler from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score # 评估准确率、精确率、召回率、F1-score from sklearn.metrics import confusion_matrix # 混淆矩阵 from sklearn.metrics import classification_report # 分类报告 from sklearn.metrics import roc_curve, auc3.1 获取数据data pd.read_csv(./data/breast-cancer-wisconsin.csv) data.info()3.2 数据预处理# 缺失值处理 data.replace(to_replace?, valuenp.nan, inplaceTrue) # 替换 data.dropna(axis0, inplaceTrue) # 按行删除3.3 特征工程3.3.1 特征提取x data.iloc[:, 1:-1] y data.Class3.3.2 特征预处理# 1. 划分数据集 x_train, x_test, y_train, y_test train_test_split(x, y, test_size0.2, random_stat2019) # 2. 标准化 scaler StandardScaler() scaler.fit_transform(x_train) scaler.transform(x_test)3.4 模型训练estimator LogisticRegression() estimator.fit(x_train, y_train)3.5 模型预测y_pre estimator.predict(x_test)3.6 模型评估# 1. 准确率 accuracy accuracy_score(y_test, y_pre) # 2. 精确率、召回率、F1-score precission precession_score(y_test, y_pre, pos_label4) recall recall_score(y_test, y_pre, pos_label4) f1_score f1_score(y_test, y_pre, pos_label4) # 3. 分类报告 label [4,2] df_label [恶性正例, 良性反例] report classification_report(y_test, y_pre, labelslabel, target_namesdf_label) # 4. 混淆矩阵 label [4, 2] # 标签先正例后反例 df_label [恶性正例, 良性反例] cm confusion_matrix(y_test, y_pre, labelslabel) cm_df pd.DataFrame(cm, indexdf_label, columnsdf_label) print(混淆矩阵\n, cm_df) # 5. 画 ROC 曲线计算 AUC fpr, tpr, thresholds roc_curve(y_test, y_pre, pos_label4) print(fpr, fpr) print(tpr, tpr) print(阈值, thresholds) auc auc(fpr, tpr) plt.plot(fpr, tpr, labelROC curve (area %.2f) % auc) plt.legend() plt.show()