基于阈值重新计算二进制分类概率的值



我有高度不平衡的数据,所以对于二进制分类,我转换阈值为0.06的1类的概率。

我想向管理层展示概率,所以我需要调整,条件是0.06是我新的50%边界。

所以我希望我的低概率,比如0.045, 0.067, 0.01值被重新计算为更高的百分比。

我想我应该把它相乘,但我不知道如何找到值。

参考数据

id     probability
_____________________
168835    0.529622
168836    0.870282
168837    0.988074
180922    0.457827
78352     0.272279
...   
320739    0.003046
329237    0.692332
329238    0.926343
329239    0.994264
320741    0.002714

不确定一年后它是否有用,但你要做的是应用逆函数,返回x值,将所有内容向左移动,并重新应用概率函数来返回概率。乘法是行不通的,除非你使用的是线性函数,我猜情况并非如此。

假设你使用标准的逻辑回归,你重新计算概率的代码应该看起来像这个

import numpy as np
import pandas as pd
df = pd.DataFrame({"probability_old":[0.529622,0.870282,0.988074,0.457827,0.272279,0.003046,0.692332,0.926343,0.994264,0.002714,0.06,0.5]})
def sig(z):
return 1/(1+np.exp(-z))
def inv_sig(z):
return np.log(z/(1-z))
y_0 = 0.06
# inv_sig(y_0) ≈ -2.75
df["probability_new"] = sig(inv_sig(df["probability_old"]) - inv_sig(y_0))

结果:

probability _new
idprobability_old
00.5296220.946352
10.8702820.990576
20.9880740.999230
30.4578270.929723
40.2722790.854264
50.0030460.045680
60.6923320.972417
70.9263430.994950
80.9942640.999632
90.0027140.040892
100.0600000.500000
110.5000000.940000

最新更新