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

如何按训练集dummy变量规则转换新数据集用于logistic regression模型验证

新样本分箱转dummy变量解决方案

核心原则:新样本必须复用训练集的分箱规则,不能对新样本单独执行qcut,否则会出现分位数偏移,导致dummy变量和模型训练时的输入维度、含义不匹配。


1 训练阶段提前保存分箱参数

你在训练集执行qcut时,要同步把分箱的边界值保存下来,不要只保留转换后的分类结果:

import pandas as pd
import joblib

# 训练集原始数据为train_df
# 湿度分3箱,同时返回分箱边界
train_df['Air_Humidity_bin'], humidity_bins = pd.qcut(
    train_df['Air_Humidity'], q=3, labels=[1,2,3], retbins=True
)
# 温度分2箱,同时返回分箱边界
train_df['Air_Temperature_bin'], temp_bins = pd.qcut(
    train_df['Air_Temperature'], q=2, labels=[1,2], retbins=True
)

# 把分箱边界持久化存储,后续预测阶段直接调用
joblib.dump(
    {'humidity_bins': humidity_bins, 'temp_bins': temp_bins}, 
    'train_bin_edges.pkl'
)

# 后续正常生成dummy变量、训练模型即可,训练好的模型也建议同步持久化存储

2 新样本转换流程

拿到新样本后,先加载训练阶段保存的分箱边界,用cut而非qcut执行分箱,之后生成dummy变量并对齐列顺序即可:

# 加载预存的分箱边界
bin_edges = joblib.load('train_bin_edges.pkl')
humidity_bins = bin_edges['humidity_bins']
temp_bins = bin_edges['temp_bins']

# 假设新样本数据为new_df,需包含Air_Humidity、Air_Temperature两个原始字段
# 按训练集边界分箱,include_lowest=True保证最小值能被划入第一箱
new_df['Air_Humidity_bin'] = pd.cut(
    new_df['Air_Humidity'], bins=humidity_bins, labels=[1,2,3], 
    include_lowest=True, duplicates='drop'
)
new_df['Air_Temperature_bin'] = pd.cut(
    new_df['Air_Temperature'], bins=temp_bins, labels=[1,2], 
    include_lowest=True, duplicates='drop'
)

# 生成dummy变量
new_dummy = pd.get_dummies(
    new_df, 
    columns=['Air_Humidity_bin', 'Air_Temperature_bin'],
    prefix=['Air_Humidity', 'Air_Temperature']
)

# 对齐训练阶段的dummy列顺序,缺失列补0,保证模型输入维度一致
train_dummy_columns = [
    'Air_Humidity_1', 'Air_Humidity_2', 'Air_Humidity_3',
    'Air_Temperature_1', 'Air_Temperature_2'
]
new_dummy = new_dummy.reindex(columns=train_dummy_columns, fill_value=0)

# 此时new_dummy即可直接输入已训练好的模型完成预测

注意事项

  • 如果新样本的数值超出训练集的分箱边界(比如训练集湿度最高为67,新样本出现75),可以自定义规则将超出值划入最近的分箱,避免出现空值。
  • 列对齐步骤不可省略,避免新样本因未覆盖某类分箱值,导致dummy列缺失、模型报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:06:02