Sklearn логистическая регрессия - настроить точку отсечения - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть модель логистической регрессии, пытающаяся предсказать один из двух классов: 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 голосов
/ 19 декабря 2018

Как указано в комментариях, процедура выбора порога производится после тренировки.Вы можете найти порог, который максимизирует функцию полезности по вашему выбору, например:

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.

...