商城首页欢迎来到中国正版软件门户

您的位置:首页 >如何还原PDP模型坐标轴原始尺度

如何还原PDP模型坐标轴原始尺度

  发布于2026-04-19 阅读(0)

扫一扫,手机访问

如何在使用标准化数据训练模型后,为部分依赖图(PDP)正确还原原始尺度的坐标轴

当使用 StandardScaler 对特征进行标准化后训练模型并绘制部分依赖图时,x轴显示的是缩放后的数值,影响业务可解释性;本文介绍如何通过反向变换刻度标签,将PDP横轴恢复为原始数据单位,无需重拟合模型或修改内部计算逻辑。

当使用 `StandardScaler` 对特征进行标准化后训练模型并绘制部分依赖图时,x轴显示的是缩放后的数值,影响业务可解释性;本文介绍如何通过反向变换刻度标签,将PDP横轴恢复为原始数据单位,无需重拟合模型或修改内部计算逻辑。

在基于标准化数据(如 StandardScaler)训练随机森林等模型后,直接调用 PartialDependenceDisplay.from_estimator() 生成的部分依赖图(PDP)会以缩放后的特征值为横坐标,导致图表难以被领域人员理解(例如显示 -1.2 到 2.4 而非原始的 35.6℃ 或 8200元)。关键在于:PDP 的计算本身依赖于模型对输入的预测行为,而模型只“认识”标准化后的数据;因此不能简单地对 X_test_final 反标准化后再传入绘图函数——这会导致预测失效。正确做法是保留模型输入的标准化流程,仅对可视化端的坐标轴刻度标签进行逆变换。

具体实现分三步:

  1. 先绘制原始 PDP 并获取坐标轴对象

    import matplotlib.pyplot as plt
    from sklearn.inspection import PartialDependenceDisplay
    
    # 绘制 PDP(仍使用标准化的 X_test_final)
    fig, ax = plt.subplots(figsize=(8, 6))
    display = PartialDependenceDisplay.from_estimator(
        best_clf, X_test_final, best_features, ax=ax
    )
  2. 对 x 轴刻度执行逆标准化(反 StandardScaler)
    假设你已保存了用于训练的 StandardScaler 实例(推荐做法),或能从原始训练特征 X_train 中重新计算均值与标准差:

    # ✅ 推荐:使用训练时保存的 scaler(确保一致性)
    # scaler = StandardScaler().fit(X_train)
    # mean_val = scaler.mean_[feature_idx]  # 某一特征的均值
    # std_val = scaler.scale_[feature_idx]   # 对应标准差
    
    # 若未保存 scaler,且 X_train 是原始训练集(二维数组),可按特征索引提取:
    feature_idx = 0  # 替换为你要可视化的特征在 X_train 中的列索引
    mean_val = X_train[:, feature_idx].mean()
    std_val = X_train[:, feature_idx].std()
    
    # 获取当前 x 轴刻度位置(标准化尺度)
    x_ticks = ax.get_xticks()
    
    # 逆变换:X_original = X_scaled × std + mean
    xticks_unscaled = [(xt * std_val) + mean_val for xt in x_ticks]
    
    # 格式化为易读字符串(如保留1位小数,或根据数据类型调整)
    ax.set_xticklabels([f'{val:.1f}' for val in xticks_unscaled])
  3. 完善图表并展示

    ax.set_xlabel(f'{feature_name} (original scale)')  # 添加单位说明
    plt.tight_layout()
    plt.show()

⚠️ 注意事项

  • 刻度逆变换仅影响标签显示,不改变 PDP 曲线形状或计算逻辑,完全安全;
  • 务必使用训练集而非测试集计算 mean 和 std,以符合 StandardScaler 的设计原则;
  • 若 best_features 包含多个特征,需对每个子图分别处理其对应特征的 mean_val/std_val;
  • 对于类别型特征或经过其他预处理(如 One-Hot 编码)的特征,此方法不适用,需单独处理。

通过该方法,你既能复用高效、稳定的标准化建模流程,又能输出面向业务解读的、具备真实物理/业务意义的部分依赖图,真正实现“建模与解释”的解耦与兼顾。

本文转载于:互联网 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注