现在,我使用optbinning模块对所有逻辑回归建模变量进行分箱。但是optbinning模块只需要使用一个变量,例如
variable = "REGION_POPULATION_RELATIVE"
x = df[variable].values
y = df.TARGET.values
from optbinning import OptimalBinning
optb = OptimalBinning(name=variable, dtype="numerical", solver="ls", max_n_prebins=100,
min_prebin_size=0.001, time_limit=50)
optb.fit(x, y)
我如何使用循环获取所有变量的装箱结果?我尝试编码
variable_names = train_validation_valid_nonstring_nondatetype_categoryencoders.keys()
for i in variable_names:
optb = OptimalBinning(name=i,dtype="numerical", solver="cp")
optb.fit(x_category_encoders_target, y_category_encoders)
但出现错误“操作数无法与形状一起广播(52803,602)(52803,)”我得到包括数百个变量的数据框,如果一一计算,那将是一个巨大的项目。请帮助我,谢谢。
要计算数据集中所有变量的最佳合并,可以使用BinningProcess类。
from optbinning import BinningProcess
binning_process = BinningProcess(variable_names=variable_names)
binning_process.fit(df[variable_names], df[target])
然后,您可以使用方法get_binned_variable
检索每个变量或给定变量列表的信息。例如:
for variable in variable_names:
optb = binning_process.get_binned_variable(name=variable)
optb.binning_table.build()
optb.binning_table.plot()
optb.binning_table.analysis()