所以我正在使用逻辑回归算法来解决分类问题,并且我获得了类#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.也许通过更改阈值可以解决此问题。
答案 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