Python,对数字变量进行装箱,使其聚集遵循给定列表

问题描述

我建立了一个分类模型,该模型以阵列形式输出概率预测。基于标签数据,我正在计算事件发生率(目标总和= 1 /记录数)。我想对这些预测进行分类,使它们的事件发生率遵循给定的事件发生率列表。例如,下面的代码表示流程:

desired_event_rate_per_bin = pd.Series([0.002,0.007,0.011,0.016,0.02,0.025,0.03,0.035,0.04,0.045])

preds = model.predict_proba(X_test)[:,1]
bins = pd.qcut(preds,10) 
df = pd.crosstab(bins,y_test).reset_index()
df.columns.name=None
df.columns = ['Bins','Non_Event','Event']
df['Total'] = df['Non_Event'] + df['Event']
df['Event_Rate'] = df['Event'] / df['Total']
df['Desired_Event_Rate'] = desired_event_rate_per_bin
df['Difference'] = df['Desired_Event_Rate'] - df['Event_Rate']

bins的数量固定为10,我必须计算 bins ,以使差异最小。我目前正在使用pd.cut和pd.qcut进行分箱,但是我认为这是一个优化问题。如何实现这一点,任何想法都将不胜感激。感谢您的帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)