逻辑回归是一种广泛用于二分类问题的统计模型。它通过使用逻辑函数将预测结果映射到0到1之间,从而可以用于概率预测。模型的训练过程通常包括以下几个步骤:
部分依赖图(Partial Dependence Plot, PDP)用于可视化单一特征或两个特征与目标变量之间的关系。它通过固定其他所有特征值,仅改变一个或两个特征值来观察模型预测的变化,从而帮助理解模型的决策过程。
单变量部分依赖图:显示了单个特征(mean radius 和 mean texture)对目标变量的影响。可以看到,随着特征值的变化,模型预测概率也随之变化。
双变量交互作用部分依赖图:显示了两个特征(mean radius 和 mean texture)的组合对目标变量的影响。通过图表可以观察到特征之间的交互作用及其对模型预测的影响。
1. 数据准备
我们将使用著名的乳腺癌数据集(Breast Cancer Dataset)进行演示。
- import pandas as pd
- from sklearn.datasets import load_breast_cancer
- from sklearn.model_selection import train_test_split
- from sklearn.preprocessing import StandardScaler
- from sklearn.linear_model import LogisticRegression
- from sklearn.metrics import accuracy_score, confusion_matrix, roc_curve, roc_auc_score
- from sklearn.inspection import PartialDependenceDisplay
- import matplotlib.pyplot as plt
- import seaborn as sns
-
- # 加载数据
- data = load_breast_cancer()
- X = pd.DataFrame(data.data, columns=data.feature_names)
- y = data.target
2.逻辑回归模型构建
- # 数据拆分
- X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
-
- # 数据标准化
- scaler = StandardScaler()
- X_train_scaled = scaler.fit_transform(X_train)
- X_test_scaled = scaler.transform(X_test)
-
- # 训练逻辑回归模型
- model = LogisticRegression(max_iter=10000)
- model.fit(X_train_scaled, y_train)
3.模型评价
- # 模型评估
- y_pred = model.predict(X_test_scaled)
- accuracy = accuracy_score(y_test, y_pred)
- conf_matrix = confusion_matrix(y_test, y_pred)
- roc_auc = roc_auc_score(y_test, model.predict_proba(X_test_scaled)[:, 1])
- fpr, tpr, thresholds = roc_curve(y_test, model.predict_proba(X_test_scaled)[:, 1])
-
3.1 混淆矩阵
- # 可视化混淆矩阵
- plt.figure(figsize=(8, 6))
- sns.heatmap(conf_matrix, annot=True, fmt='d', cmap='Blues')
- plt.xlabel('Predicted')
- plt.ylabel('Actual')
- plt.title('Confusion Matrix')
- plt.show()

混淆矩阵显示了模型在测试数据上的预测结果:
3.2 ROC 曲线
- # 可视化ROC曲线
- plt.figure(figsize=(8, 6))
- plt.plot(fpr, tpr, label=f'ROC curve (area = {roc_auc:.2f})')
- plt.plot([0, 1], [0, 1], 'k--')
- plt.xlabel('False Positive Rate')
- plt.ylabel('True Positive Rate')
- plt.title('ROC Curve')
- plt.legend(loc='lower right')
- plt.show()

ROC曲线展示了模型在不同阈值下的性能,曲线下面积(AUC)为0.99,表明模型具有很好的分类性能。
3.3 模型评估结果
4.部分依赖图(PDP)解析
4.1 多个单变量部分依赖图(PDP)解析
特征选择,我们选择了乳腺癌数据集中的五个特征进行PDP解析:
- # 选择多个特征进行PDP解析
- features = [2, 3, 4, 5, 6] # 选择不同的特征进行解析
-
- # 生成并展示单变量PDP
- fig, ax = plt.subplots(figsize=(12, 8))
- PartialDependenceDisplay.from_estimator(model, X_train_scaled, features, ax=ax)
- plt.suptitle('Partial Dependence Plots for Multiple Single Features')
- plt.subplots_adjust(top=0.9) # 调整标题位置
- plt.show()
4.1.1 PDP运行结果图

4.1.2 PDP结果分析
mean perimeter:
mean perimeter值较小时,模型预测的恶性肿瘤的概率较低。mean perimeter值的增加,恶性肿瘤的概率显著增加,这与乳腺癌肿瘤通常更大有关。mean area:
mean area的PDP图展示了类似的趋势,即当mean area较小时,恶性肿瘤的概率较低。mean area增加时,恶性肿瘤的概率也显著增加。这符合肿瘤面积较大的病变通常更可能是恶性肿瘤的规律。mean smoothness:
mean smoothness,PDP图显示其与恶性肿瘤概率的关系较为复杂。mean smoothness的增加会导致恶性肿瘤概率的增加,但这种关系不如前两个特征那么显著。mean compactness:
mean compactness的PDP图也显示出其与恶性肿瘤概率的正相关关系。mean compactness增加,恶性肿瘤的概率上升,但这个特征的影响相对较小。mean concavity:
mean concavity与恶性肿瘤概率有明显的正相关关系。mean concavity较高时,恶性肿瘤的概率显著增加,这表明该特征对模型预测有重要影响。特征选择,我们选择了以下特征对进行交互PDP解析:
- # 选择不同的特征对进行双变量交互PDP解析
- features_interaction = [(0, 2), (1, 3), (2, 4), (3, 5)] # 选择特征对进行交互解析
-
- # 生成并展示双变量PDP
- fig, ax = plt.subplots(figsize=(12, 8))
- PartialDependenceDisplay.from_estimator(model, X_train_scaled, features_interaction, ax=ax)
- plt.suptitle('Partial Dependence Plots for Feature Interactions')
- plt.subplots_adjust(top=0.9) # 调整标题位置
- plt.show()
4.2.1 PDP运行结果图

4.2.2 PDP结果分析
mean radius 和 mean perimeter:
mean radius和mean perimeter同时增加时,恶性肿瘤的概率显著增加。mean texture 和 mean area:
mean texture和mean area的交互PDP图展示了类似的趋势。当这两个特征值同时较高时,恶性肿瘤的概率也显著增加。mean perimeter 和 mean smoothness:
mean perimeter和mean smoothness的交互PDP图中,我们可以看到这两个特征的交互作用。mean perimeter值较大且mean smoothness值较小时,恶性肿瘤的概率最高。这表明大周长和低光滑度的组合对预测恶性肿瘤具有重要作用。mean area 和 mean compactness:
mean area和mean compactness的交互PDP图显示了当这两个特征值较高时,恶性肿瘤的概率也较高。通过单变量PDP图的解析,我们可以更好地理解模型是如何利用这些特征进行预测的。具体来说,肿瘤的周长、面积、光滑度、紧凑度和凹度都对模型预测有显著影响。这些特征与恶性肿瘤概率之间的关系符合医学上的常识,例如更大的周长和面积通常意味着更可能是恶性肿瘤。
通过分析双变量交互的PDP图,我们可以更全面地理解模型在考虑特征交互作用时的行为。这些交互作用图表明,多种特征的组合对恶性肿瘤的预测具有显著影响,特别是当多个特征值同时较高时,模型预测的恶性肿瘤概率也会显著增加。