python中的逻辑回归。概率阈值

时间:2017-06-17 20:58:58

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

所以我正在使用逻辑回归算法来解决分类问题,并且我获得了类#34; 1"的测试集的所有预测。该集合非常不平衡,因为它有超过20万输入,而且或多或少92%来自类" 1"。逻辑回归通常将输入分类为类" 1"如果P(Y = 1 | X)> 0.5。因此,由于测试集中的所有观察被分类为1类,我认为可能有一种方法来改变该阈值并将其设置为例如0.75,以便仅观察到P(Y = 1 | X)> 0.75分类为1级,否则为0级。如何在python中实现它?

model= LogisticRegression(penalty='l2', C=1) 
model.fit(X_train, y_train)
score=accuracy_score(y_test, model2.predict(X_test))
fpr, tpr, thresholds = roc_curve(y_test, model2.predict_proba(X_test)[:,1])
roc=roc_auc_score(y_test, model2.predict_proba(X_test)[:,1])
cr=classification_report(y_test, model2.predict(X_test))

PS。由于测试集中的所有观察结果都被归类为1级,因此F1分数和分类报告中的召回率为0.也许通过更改阈值可以解决此问题。

1 个答案:

答案 0 :(得分:2)

您可能想要尝试的是平衡类而不是更改阈值。 Scikit-learn通过class_weights支持此功能。例如,您可以尝试model = LogisticRegression(penalty='l2', class_weight='balanced', C=1)。查看文档以获取更多详细信息:

http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html