医学数据分析中的偏特征图可视化

在医学领域,我们经常需要处理复杂的数据模型,探索特征与目标变量之间的关系。偏特征图(Partial Dependence Plot, PDP)是一种强大的可视化技术,可以帮助我们更好地理解模型的行为。通过这种图形,我们可以直观地观察每个特征对模型预测结果的影响程度。

在本文中,我们将介绍如何使用Python中的scikit-learn库绘制医学数据的偏特征图,包括单变量PDP、结合直方图的PDP,以及双变量PDP。这些可视化技术将帮助我们深入分析模型,优化医学数据分析的性能。

数据准备

首先,我们导入必要的Python库,并读取包含医疗数据的Excel文件:

python 复制代码
import numpy as np
import pandas as pd
from sklearn.ensemble import RandomForestRegressor
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split

df = pd.read_excel('data.xlsx')
feature_names = ['X1', 'X2', 'X3', 'X4', 'X5', 'X6', 'X7']
X = df[feature_names]
y = df['Y'].values

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

在这个示例中,我们使用了7个特征(X1到X7)来预测一个目标变量Y。我们将数据集拆分为训练集和测试集,以便后续模型训练和评估。

模型训练

接下来,我们使用RandomForestRegressor训练一个回归模型:

python 复制代码
rf = RandomForestRegressor(n_estimators=100, random_state=42)
rf.fit(X_train, y_train)

这里我们设置了100棵决策树,并固定随机种子,确保结果可复现。

绘制单变量偏特征图

偏特征图可以帮助我们理解每个特征对模型预测结果的影响。我们可以逐个绘制每个特征的偏特征图:

python 复制代码
for idx in range(len(feature_names)):
    fig, ax = plt.subplots(figsize=(10, 6))
    PartialDependenceDisplay.from_estimator(
        rf,
        X,
        features=[idx],
        contour_kw={'cmap': 'viridis', 'alpha': 0.8},
        ax=ax
    )
    ax.tick_params(axis='x', which='both', length=0)
    plt.title("Partial Dependence Plots for {}".format(feature_names[idx]))
    ax.set_xlabel(feature_names[idx])
    ax.set_ylabel("Partial Dependence")
    plt.tight_layout()
    plt.savefig('PDP_' + feature_names[idx] + '.pdf')
    plt.show()

这段代码会为每个特征生成一张偏特征图,展示该特征对模型预测结果的影响。我们可以观察每个图形,了解模型是如何利用这些特征进行预测的。例如,我们可以发现某些特征呈现出非线性关系,这可能需要我们在建模时考虑更复杂的关系。

绘制单变量偏特征图和直方图

有时我们希望同时查看特征的分布情况,以更好地理解模型的行为。我们可以在偏特征图上添加直方图:

python 复制代码
for feature in feature_names:
    fig, ax = plt.subplots(figsize=(10, 6))
    PartialDependenceDisplay.from_estimator(
        rf,
        X_test,
        features=[feature],
        kind='both',
        grid_resolution=50,
        contour_kw={'cmap': 'viridis', 'alpha': 0.8},
        ax=ax
    )
    ax.set_title(f"Partial Dependence Plot for {feature}")
    ax.set_ylabel("Partial Dependence")
    ax.set_ylim(0, 700)
    ax.tick_params(axis='x', length=0)

    ax_hist = ax.twinx()
    ax_hist.hist(X[feature], bins=20, facecolor='gray', alpha=0.5)
    ax_hist.set_xlabel(feature)
    ax_hist.set_ylim(0, 1800)
    ax_hist.set_yticks([])
    ax.legend()

    plt.tight_layout()
    plt.savefig(f'PDP_BAR{feature}.pdf')
    plt.show()

这段代码会为每个特征生成一张包含偏特征图和直方图的图形。通过这种方式,我们可以更好地理解特征的分布情况以及它对模型预测的影响。例如,我们可以发现某些特征的分布可能存在偏斜或异常值,这可能需要我们在预处理数据时进行相应的处理。

绘制双变量偏特征图

有时我们可能需要探索特征之间的交互效应。为此,我们可以绘制双变量偏特征图:

python 复制代码
two_features = ['X1', 'X2'] 
fig, ax = plt.subplots(figsize=(10, 6))
PartialDependenceDisplay.from_estimator(
    rf,
    X_test,
    features=[two_features],
    kind='average',
    grid_resolution=50,
    contour_kw={'cmap': 'viridis', 'alpha': 0.8},
    ax=ax
)
plt.suptitle('2D Partial Dependence Plot for {} and {}'.format(two_features[0], two_features[1]))
plt.savefig('PDF_X1X2.pdf')
plt.show()

这段代码会绘制两个特征(X1和X2)的联合偏特征图。通过这种方式,我们可以更深入地理解特征之间的相互作用,并进一步优化模型的性能。例如,我们可以发现某些特征存在协同效应或抑制效应,这可能需要我们在特征工程阶段考虑构建新的复合特征。

总结

偏特征图是一种非常有用的可视化技术,它可以帮助我们更好地理解医学数据模型的行为。在本文中,我们详细介绍了如何使用Python中的scikit-learn库绘制单变量PDP、单变量PDP+直方图以及双变量PDP。通过这些图形,我们可以更深入地洞察特征对模型预测结果的影响,从而进一步优化和改进医学数据分析模型。

希望本文对您在医学领域的数据分析工作有所帮助。如果您有任何进一步的问题或需求,欢迎随时与我交流。

相关推荐
yaodong5187 小时前
不会Python也能数据分析:Gemini 3.1 Pro解决办公问题的SQL自动生成
python·sql·数据分析
AI科技星10 小时前
精细结构常数α作为SI 7大基本量纲统一耦合常数的量子几何涌现理论
算法·机器学习·数学建模·数据挖掘·量子计算
STLearner11 小时前
SIGIR 2026 | LLM × Graph论文总结(图增强LLM,GraphRAG,Agent,多模态,知识图谱,搜索,推
人工智能·python·深度学习·神经网络·机器学习·数据挖掘·知识图谱
PaperData12 小时前
2000-2023年地级市数字基础设施评价指标体系
大数据·网络·数据库·人工智能·数据分析·经管
xrui5813 小时前
2026实测:让 Gemini 3.1镜像站抓取邮箱并智能分类,GTD 效率提升 3 倍
人工智能·分类·数据挖掘
用户94161469336514 小时前
Python 实时监控 A 股行情并自动筛选强势股(REST + WebSocket 两种方案)
后端·数据分析
geneculture14 小时前
《一种智能通信子母机》(申请日 1993.4.7公开号CN1095341A)专利文件的全文汉英双语对照版本+系统点评
人工智能·数据挖掘·哲学与科学统一性·智能通信
一晌小贪欢15 小时前
第1节:数据分析环境配置——Jupyter Notebook全攻略
jupyter·数据挖掘·数据分析·可视化·数据可视化
HQChart15 小时前
HQChart使用教程105-K线图,分时图如何对接AI进行数据分析
人工智能·数据挖掘·数据分析·hqchart·k线图·走势图
AI科技星15 小时前
全域数学·数术本源·第四卷《分析原本》【乖乖数学】
人工智能·机器学习·数学建模·数据挖掘·agi