我已经训练了一个模型并确定了一个我想部署它的“阈值”,但我无法理解阈值与分数的关系。
X = labeled_data[features].reset_index(drop=True)
Y = np.array(labeled_data['fraud'].reset_index(drop=True))
# (train/test etc.. settle on an acceptable model)
grad_des = SGDClassifier(alpha=alpha_optimum, l1_ratio=l1_optimum, loss='log')
grad_des.fit(X, Y)
score_Y = grad_des.predict_proba(X)
precision, recall, thresholds = precision_recall_curve(Y, score_Y[:,1])
好的,所以现在我绘制精度和召回率与阈值并决定我希望我的阈值是 0.4
什么是门槛?
我的模型系数,我理解是通过计算对事件进行“评分” coefficients['x']*event_values['x']
,总和为 29。阈值介于 0 和 1 之间。
我如何理解从阈值到什么的翻译,我猜是原始分数?1
对于所有特征(都是二进制)的事件,计算得分是否为 29,因为这是所有系数的总和?
我是否需要为所有事件计算这个“原始”分数指标,然后根据精度而不是阈值绘制它?
编辑和更新:
因此,正如 Mikhail Korobov 在下面指出的那样,我的问题在于对逻辑功能缺乏了解。无论“原始分数”如何,逻辑函数都会强制 [0, 1] 范围内的值。
为了将该值“解包”回我正在寻找的“原始分数”中,我可以这样做scipy.special.logit(0.8) - grad_des.intercept_
,这将返回该行的“分数”。