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

使用sm.binning处理Titanic数据集:如何实现类似cut的自动分类?

用sm.binning实现自动分箱并生成分类变量(替代cut+手动ifelse)

当然可以!scorecard包里的sm.binning()本身就支持自动分箱逻辑,完全能帮你摆脱嵌套ifelse的繁琐,直接生成对应分类变量,完美匹配你想要的类似cut函数的自动分类效果。下面我结合Titanic数据集给你一步步演示操作:

1. 准备工作:加载依赖与数据

首先确保你已经安装了scorecard和pandas,然后导入工具并加载数据:

import pandas as pd
from scorecard import sm.binning

# 加载Titanic数据集(替换成你的本地路径或数据源)
titanic = pd.read_csv("titanic.csv")

2. 用sm.binning执行自动分箱

sm.binning支持多种自动分箱算法,比如基于决策树的tree方法(追求最优预测性)、基于卡方检验的chi方法(追求分布合理性)。这里以Age变量为例,指定二分类目标变量Survived来自动计算分箱边界:

# 对Age变量执行自动分箱
binning_result = sm.binning(
    data=titanic,
    y="Survived",  # 二分类目标列
    x="Age",       # 需要分箱的连续变量
    method="tree", # 自动分箱方法,可选tree/chi等
    show_plot=False # 不需要可视化的话设为False
)

3. 基于分箱结果生成分类变量

分箱完成后,binning_result['binning_table']里会包含分箱的边界值。我们可以把这些边界提取出来,配合pd.cut快速生成分类变量——完全不用写一行ifelse:

# 提取分箱边界,补充正负无穷确保覆盖所有数据
cut_points = binning_result['binning_table']['cut_point'].tolist()
bins = [-float('inf')] + cut_points + [float('inf')]

# 生成自动分箱后的分类变量
titanic['Age_binned'] = pd.cut(
    titanic['Age'],
    bins=bins,
    labels=binning_result['binning_table']['bin'].tolist(), # 用分箱表的标签
    include_lowest=True # 确保左边界包含在内
)

4. 验证与批量处理

你可以查看分箱结果和新变量是否匹配:

# 打印分箱规则表
print("分箱规则:")
print(binning_result['binning_table'])

# 查看原始变量与分箱后变量的对应关系
print("\n样本匹配情况:")
print(titanic[['Age', 'Age_binned']].head(10))

如果要批量处理多个连续变量,写个循环就能搞定:

# 批量处理多个连续变量
continuous_vars = ['Age', 'Fare']
for var in continuous_vars:
    bin_res = sm.binning(data=titanic, y='Survived', x=var, method='tree')
    cut_points = bin_res['binning_table']['cut_point'].tolist()
    bins = [-float('inf')] + cut_points + [float('inf')]
    titanic[f"{var}_binned"] = pd.cut(
        titanic[var],
        bins=bins,
        labels=bin_res['binning_table']['bin'].tolist(),
        include_lowest=True
    )

这样就能轻松实现自动分箱并生成分类变量,完全省去手动编写逻辑的麻烦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:18:40