因此,我正在用逻辑回归算法逼近分类问题,并获得了类“1”的测试集的所有预测。该集合非常不平衡,因为它具有超过200k的输入,92%的集合来自类“1”。如果P(Y = 1 | X)> 0.5,Logistic回归通常将输入分类为类“1”。因此,由于测试集中的所有观察值都被归类为1类,我认为可能有一种方法来改变该阈值并将其设置为例如0.75,以便只有P(Y = 1 | X)> 0.75的观察值归类到类1,否则归类0.如何在python中实现它?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.可能通过更改阈值来解决此问题。
谢谢。有效。你知道如何处理MLP分类器中的相同问题吗?在这种情况下,f1分数和召回也是0。 –
如果您使用keras,您可以在这里找到答案:https://datascience.stackexchange.com/questions/13490/how-to-set-class-weights-for-imbalanced-classes-in-keras。它的工作原理类似Scikit-learn的MLPClassifier不支持这一点。或者,您可以对最小的类进行过采样,或对最大的类进行欠采样。 – Simon