您的位置:首页 >如何还原PDP模型坐标轴原始尺度
发布于2026-04-19 阅读(0)
扫一扫,手机访问

当使用 StandardScaler 对特征进行标准化后训练模型并绘制部分依赖图时,x轴显示的是缩放后的数值,影响业务可解释性;本文介绍如何通过反向变换刻度标签,将PDP横轴恢复为原始数据单位,无需重拟合模型或修改内部计算逻辑。
当使用 `StandardScaler` 对特征进行标准化后训练模型并绘制部分依赖图时,x轴显示的是缩放后的数值,影响业务可解释性;本文介绍如何通过反向变换刻度标签,将PDP横轴恢复为原始数据单位,无需重拟合模型或修改内部计算逻辑。
在基于标准化数据(如 StandardScaler)训练随机森林等模型后,直接调用 PartialDependenceDisplay.from_estimator() 生成的部分依赖图(PDP)会以缩放后的特征值为横坐标,导致图表难以被领域人员理解(例如显示 -1.2 到 2.4 而非原始的 35.6℃ 或 8200元)。关键在于:PDP 的计算本身依赖于模型对输入的预测行为,而模型只“认识”标准化后的数据;因此不能简单地对 X_test_final 反标准化后再传入绘图函数——这会导致预测失效。正确做法是保留模型输入的标准化流程,仅对可视化端的坐标轴刻度标签进行逆变换。
具体实现分三步:
先绘制原始 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
)对 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])完善图表并展示:
ax.set_xlabel(f'{feature_name} (original scale)') # 添加单位说明
plt.tight_layout()
plt.show()⚠️ 注意事项:
通过该方法,你既能复用高效、稳定的标准化建模流程,又能输出面向业务解读的、具备真实物理/业务意义的部分依赖图,真正实现“建模与解释”的解耦与兼顾。
上一篇:信息系统开发新方法有哪些
下一篇:循环中如何用前后非零值填充零值
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9