You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改代码为每个特征生成独立的Partial Dependence Plot(PDP)

问题描述

当前生成的Partial Dependence Plot(部分依赖图,PDP)是将6个特征的图合并在一张画布中,如何修改代码,为每个特征生成独立的PDP(共6张独立图)?

解决方案

核心思路是循环遍历每个特征,单独生成对应PDP图:

  • 不再一次性传入所有特征索引,而是逐个传入单个特征索引
  • 每次生成图前创建新的画布(plt.figure()),确保每个图独立
  • 为每张图单独设置标题、坐标轴标签,提升可读性
修改后的完整代码
from sklearn.base import BaseEstimator, RegressorMixin
from sklearn.utils import check_X_y, check_array
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.inspection import PartialDependenceDisplay

# 加载数据
data_set = pd.read_excel("Alpha copy.xlsx")
pd.set_option('max_columns', 35)
pd.set_option('max_rows', 300)
data_set.head(300)

X, y = data_set[["B","D","k","fc","Le","N"]], data_set[["R"]]

# 自定义回归器(修正原代码缩进错误)
class DummyRegressor(BaseEstimator, RegressorMixin):
    def fit(self, X, y):
        X, y = check_X_y(X, y, y_numeric=True)
        self.X_ = X
        self.y_ = y
        return self

    def predict(self, X):
        X = check_array(X)
        # 确保objective函数接受对应参数(需自行定义objective)
        return objective(X[:, 0], X[:, 1], X[:, 2], X[:, 3], X[:, 4], X[:, 5])

# 训练模型
dummy_reg = DummyRegressor()
dummy_reg.fit(X, y.values.ravel())    

# 特征列表,用于循环
features = ["B", "D","k", "fc","Le", "N"]

# 循环生成每个特征的独立PDP图
for idx, feature_name in enumerate(features):
    # 创建新画布,每个图独立
    plt.figure(figsize=(8, 5))
    # 单独生成当前特征的PDP
    display = PartialDependenceDisplay.from_estimator(
        dummy_reg, X, [idx],
        feature_names=[feature_name],
        ax=plt.gca()  # 指定当前画布的轴
    )
    # 设置坐标轴标签和标题
    plt.ylabel("R")
    plt.title(f"部分依赖图 - 特征 {feature_name}")
    # 可选:保存图片,路径可自行修改
    # plt.savefig(f"pdp_{feature_name}.png", dpi=100, bbox_inches='tight')
    plt.show()
关键修改点说明
  • 新增循环遍历每个特征,每次仅传入单个特征索引[idx]
  • 每次调用plt.figure()创建独立画布,避免图重叠
  • 为每张图添加专属标题,明确对应特征
  • 修正原代码中predict方法的缩进错误,以及补充pandas导入(原代码遗漏)

内容的提问来源于stack exchange,提问作者user20155022

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 19:10:29