gpt4 book ai didi

python - sklearn SGDClassifier 模型阈值与模型分数有何关系?

转载 作者:行者123 更新时间:2023-12-01 03:28:47 26 4
gpt4 key购买 nike

我已经训练了一个模型并确定了一个我想要部署它的“阈值”,但我无法理解阈值与分数的关系。

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_这将返回该行的“分数”。

最佳答案

  1. 概率不仅仅是coefficients['x']*event_values['x'] - a logistic function应用于这些分数以获得 [0, 1] 范围内的概率值。

  2. predict_proba 方法返回这些概率;它们的范围是 [0, 1]。

  3. 要获得具体的是/否预测,必须选择一个概率阈值。一个明显且明智的方法是使用 0.5:如果概率大于 0.5,则预测"is",否则预测“否”。这就是 .predict() 方法的作用。

  4. precision_recall_curve 尝试不同的概率阈值并计算它们的精度和召回率。如果根据精确率和召回率分数,您认为其他阈值更适合您的应用程序,您可以使用它而不是 0.5,例如bool_prediction = Score_Y[:,1] > 阈值

关于python - sklearn SGDClassifier 模型阈值与模型分数有何关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41171894/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com