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

如何将预测数据Age列统计值映射到训练数据的Age_bin分箱列

实现方案
  • 第一步:提取训练集分箱边界参数
    必须复用训练集的分箱边界,禁止在预测集重新计算分箱,避免区间规则不匹配。
    如果你在训练集生成分箱时还保留代码,直接添加retbins=True参数获取边界:
    import pandas as pd
    # 训练集生成分箱时同步返回边界
    train_df['Age_bin'], bin_edges = pd.cut(
        train_df['Age'],
        bins=5, # 替换为你实际使用的分箱数量/自定义边界列表
        retbins=True,
        include_lowest=True # 和你之前分箱的参数保持一致
    )
    
    如果你已经生成了训练集的Age_bin但没存边界,可以从现有列的区间值提取:
    # 提取所有区间的左右边界后去重排序
    bin_edges = sorted(
        {x.left for x in train_df['Age_bin'].unique()} 
        | {x.right for x in train_df['Age_bin'].unique()}
    )
    
  • 第二步:对预测集Age列应用完全相同的分箱逻辑
    test_df['Age_bin'] = pd.cut(
        test_df['Age'],
        bins=bin_edges,
        include_lowest=True # 必须和训练集分箱参数一致
    )
    
  • 第三步:将训练集的分箱计数映射到预测集
    # 生成训练集分箱对应计数的映射字典
    bin_count_map = train_df['Age_bin'].value_counts().to_dict()
    # 映射到预测集
    test_df['Age_bin_count'] = test_df['Age_bin'].map(bin_count_map)
    # 可选:预测集存在超出训练集年龄范围的样本时,填充计数为0
    test_df['Age_bin_count'] = test_df['Age_bin_count'].fillna(0).astype(int)
    

注意事项:分箱时的right(是否左开右闭)、include_lowest(是否包含左边界最小值)等参数必须和训练集生成分箱时的参数完全一致,避免边界样本的分箱结果不匹配。

内容的提问来源于stack exchange,提问作者self.Fool

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:45:01