Sklearn Logistic回归-调整临界点

时间:2018-12-19 08:07:26

标签: python-3.x scikit-learn logistic-regression

我有一个逻辑回归模型试图预测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

1 个答案:

答案 0 :(得分:1)

如评论中所述,选择阈值的过程在训练后完成。您可以找到使所选实用程序功能最大化的阈值,例如:

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))

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