Sklearn逻辑回归 - 调整截止点

Posted

技术标签:

【中文标题】Sklearn逻辑回归 - 调整截止点【英文标题】:Sklearn logistic regression - adjust cutoff point 【发布时间】:2019-05-19 16:36:57 【问题描述】:

我有一个逻辑回归模型试图预测以下两个类别之一:A 或 B。

我的模型在预测 A 时的准确度约为 85%。 模型在预测 B 时的准确度约为 50%。 B 的预测并不重要,但 A 的预测非常重要。

我的目标是在预测 A 时最大限度地提高准确率。有没有办法在确定类别时调整默认决策阈值?

classifier = LogisticRegression(penalty = 'l2',solver = 'saga', multi_class = 'ovr')
classifier.fit(np.float64(X_train), np.float64(y_train))

谢谢! RB

【问题讨论】:

引入特殊阈值只影响误报/误报的比例,从而影响精度/召回率的权衡,但这不是LR模型的参数。 【参考方案1】:

如 cmets 中所述,选择阈值的过程是在训练后完成的。您可以找到最大化您选择的效用函数的阈值,例如:

from sklearn import metrics
preds = classifier.predict_proba(test_data)
tpr, tpr, thresholds = metrics.roc_curve(test_y,preds[:,1])
print (thresholds)

accuracy_ls = []
for thres in thresholds:
    y_pred = np.where(preds[:,1]>thres,1,0)
    # Apply desired utility function to y_preds, for example accuracy.
    accuracy_ls.append(metrics.accuracy_score(test_y, y_pred, normalize=True))

然后,选择最大化所选效用函数的阈值。在您的情况下,选择在y_pred 中最大化1 的阈值。

【讨论】:

以上是关于Sklearn逻辑回归 - 调整截止点的主要内容,如果未能解决你的问题,请参考以下文章

在 python 中使用 sklearn 对连续数据进行逻辑回归

python:如何在sklearn中使用逻辑回归系数构建决策边界

获取 sklearn 逻辑回归的边际效应

sklearn上的逻辑回归函数

为啥 sklearn 逻辑回归正则化权重和截距?

sklearn逻辑回归上的DataConversionWarning