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 对连续数据进行逻辑回归