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

如何逆转换OneHotEncoding结合sklearn计算线性回归特征系数coef_

解决思路

你不需要用到Pipeline封装的clf对象,直接调用你拆分步骤中自己定义的OneHotEncoder实例即可,操作逻辑和原帖完全一致:

  • 首先定位你之前做独热编码时实例化、训练过的OneHotEncoder对象,示例如下(替换为你自己代码中的变量名即可):
# 你本地拆分预处理时的代码示例,替换为你的实际变量名
from sklearn.preprocessing import OneHotEncoder
# 这就是你自己的独热编码实例,下文以变量名ohe指代
ohe = OneHotEncoder(sparse_output=False, drop='first') 
ohe.fit(你的分类特征数据集)
  • 直接调用该实例获取独热编码生成的列名,sklearn 1.0+版本用get_feature_names_out,旧版本用get_feature_names即可:
onehot_columns = list(ohe.get_feature_names_out(input_features=你的原始分类特征名列表))
  • 拼接数值特征和独热特征的全量特征名,这个列表的顺序和你喂给线性回归模型的输入特征顺序完全对应:
all_features = list(你的原始数值特征名列表)
all_features.extend(onehot_columns)
  • 把特征名和线性回归的系数绑定,即可得到每个特征的对应系数:
import pandas as pd
coef_result = pd.DataFrame({
    'feature_name': all_features,
    'coefficient': 你训练好的LinearRegression实例名.coef_
})
可选:按原始特征聚合系数

如果你需要计算每个原始分类特征的整体重要性,可以对同一原始特征生成的所有独热列的系数绝对值求和:

# 标记每个特征对应的原始特征名
coef_result['original_feature'] = coef_result['feature_name'].apply(
    lambda x: x.split('_')[0] if x in onehot_columns else x
)
# 聚合得到每个原始特征的总重要性
feature_importance = coef_result.groupby('original_feature')['coefficient'].apply(
    lambda x: x.abs().sum()
).reset_index()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:36:03