BinningProcess:binning_transform_params参数中的错误,metric = bins

BinningProcess: error in binning_transform_params parameter with metric = bins

提问人:hexolitemax 提问时间:9/25/2023 最后编辑:desertnauthexolitemax 更新时间:9/27/2023 访问量:27

问:

我想使用 BinningProcess 来转换 sklearn 管道中的列。但是,我希望 BinningProcess 返回 bins 而不是目标变量的平均值,以获得有意义的 bin 名称。

为了说明我的问题,我从 sklearn 管道中生成了一个示例。我对 BinningProcess 文档的理解是我可以处理 binning 输出格式

1. 在带有选项度量.transform 方法中。

df = pd.DataFrame({'continuous_feature': choices(range(0,30), k=95) + [np.NaN]*5,
                        'cat_feature': choices(['A', 'B', 'C'], k = 100),
                         'target' : [uniform(15,16) for x in range(0,100)]})

all_features = ["continuous_feature", "cat_feature"]
X = df.loc[:, all_features]
y = df.loc[:, 'target']

BinningProcess(all_features).fit_transform(X,y, metric = "bins")

这工作正常,我获得了所需的表格:

enter image description here

但是,由于我最终想在管道中使用 BinningProcess,因此我无法使用此 .transform 方法选项。

2. 或者在 BinningProcess 函数中使用选项 binning_transform_params

等效代码应为:

df = pd.DataFrame({'continuous_feature': choices(range(0,30), k=95) + [np.NaN]*5,
                    'cat_feature': choices(['A', 'B', 'C'], k = 100),
                     'target' : [uniform(15,16) for x in range(0,100)]})
all_features = ["continuous_feature", "cat_feature"]

X = df.loc[:, all_features]
y = df.loc[:, 'target']

BinningProcess(all_features,
               binning_transform_params = {"continuous_feature": {"metric": "bins"},
                                           "cat_feature": {"metric": "bins"}}).fit_transform(X,y)

不幸的是,这会产生一个错误

ValueError: could not convert string to float: '(-inf, 4.50)'

我能做些什么来防止这个错误?

另外,如果我使用“bins”以外的其他选项,例如“索引”,binning_transform_params效果很好:{"continuous_feature": {"metric": "indices"}, "cat_feature": {"metric": "indices"}}

enter image description here

python scikit-learn 预处理器 optbinning

评论

0赞 Ben Reiniger 10/3/2023
他们的 github 上的问题:github.com/guillermo-navas-palencia/optbinning/issues/266

答: 暂无答案