我有高度不平衡的数据,所以对于二进制分类,我转换阈值为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))
结果:
id | probability_old | probability _new|
---|---|---|
0 | 0.529622 | 0.946352 |
1 | 0.870282 | 0.990576 |
2 | 0.988074 | 0.999230 |
3 | 0.457827 | 0.929723 |
4 | 0.272279 | 0.854264 |
5 | 0.003046 | 0.045680 |
6 | 0.692332 | 0.972417 |
7 | 0.926343 | 0.994950 |
8 | 0.994264 | 0.999632 |
9 | 0.002714 | 0.040892 |
10 | 0.060000 | 0.500000 |
11 | 0.500000 | 0.940000 |