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

如何在sklearn Pipeline中使用ExplainerDashboard并还原原始数据

让ExplainerDashboard显示原始数据(逆转序数编码与归一化)

问题背景

使用sklearn Pipeline结合ExplainerDashboard时,面板默认显示经过预处理(归一化、序数编码)后的数值,无法直观查看原始数据。需要实现特征逆变换,让面板展示真实原始值。

解决方案步骤

1. 先拟合预处理组件并保存转换器

单独拟合预处理模块,确保后续能调用拟合后的转换器进行逆变换:

# 先拟合预处理组件
preprocessor.fit(X_train)

# 构建完整Pipeline并训练模型
regressor = Pipeline(
    steps=[("preprocessor", preprocessor), ("regressor", LGBMRegressor())]
)
regressor.fit(X_train, y_train)

2. 提取拟合后的转换器

从训练好的Pipeline中取出用于数值缩放和序数编码的转换器:

# 获取拟合后的数值缩放器
numeric_scaler = regressor.named_steps['preprocessor'].named_transformers_['num'].named_steps['scaler']
# 获取拟合后的序数编码器
ordinal_encoder = regressor.named_steps['preprocessor'].named_transformers_['ord']

3. 定义特征逆变换函数

编写函数将预处理后的特征转换回原始格式,涵盖数值特征的逆缩放和序数特征的逆编码:

import numpy as np
import pandas as pd

def inverse_transform(processed_X):
    # 划分预处理后特征的索引区间
    num_len = len(numeric_features)
    ord_len = len(ordinal_features)
    
    num_idx = slice(0, num_len)
    ord_idx = slice(num_len, num_len + ord_len)
    nom_idx = slice(num_len + ord_len, None)
    
    # 数值特征逆缩放
    num_data = numeric_scaler.inverse_transform(processed_X[:, num_idx])
    # 序数特征逆编码
    ord_data = ordinal_encoder.inverse_transform(processed_X[:, ord_idx])
    # 标称特征(独热编码)暂时保留原处理结果,若需还原原始类别需额外处理
    
    # 合并逆变换后的数据
    inverse_data = np.hstack([num_data, ord_data, processed_X[:, nom_idx]])
    
    # 生成原始特征名列表
    feature_names = (numeric_features + ordinal_features + 
                     list(regressor.named_steps['preprocessor'].named_transformers_['nom'].get_feature_names_out(nominal_features)))
    
    return pd.DataFrame(inverse_data, columns=feature_names)

4. 初始化Explainer并传入逆变换函数

注意这里传入的X_test必须是未经过预处理的原始测试数据,同时指定逆变换函数:

explainer = RegressionExplainer(
    regressor,
    X_test,  # 原始测试数据,不是预处理后的
    y_test,
    cats=cats,
    inverse_transform=inverse_transform
)
ExplainerDashboard(explainer).run(mode='external')

额外说明

  • 对于独热编码的标称特征,若要还原为原始类别列,需要额外编写逻辑合并独热列,或者在初始化Explainer时直接传入原始标称特征列,让Dashboard自动识别类别展示。
  • 确保cats参数正确包含所有类别特征(序数+标称),这样Dashboard能正确渲染类别型特征的展示效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 08:31:02