我LogisticRegression()
在scikit-learn
高度不平衡的数据集上使用该方法。我什class_weight
至将功能更改为auto
。
我知道在Logistic回归中应该可以知道特定一对类的阈值是多少。
是否可以知道该LogisticRegression()
方法设计的“一对多”类中的每个阈值?
我在文档页面中找不到任何内容。
默认情况下,是否将0.5
值用作所有类的阈值而与参数值无关?
是的,Sci-Kit学习对二进制分类使用的阈值P> 0.5。我将以一些已经发布的答案为基础,并提供两个选项来进行检查:
一个简单的选择是使用下面代码的model.predict_proba(test_x)段的输出以及类预测(下面代码的model.predict(test_x)段的输出)提取每种分类的概率。然后,将类别预测及其概率附加到您的测试数据框中以作为检查。
作为另一种选择,可以使用以下代码以图形方式查看各种阈值下的精度与召回率。
### Predict test_y values and probabilities based on fitted logistic
regression model
pred_y=log.predict(test_x)
probs_y=log.predict_proba(test_x)
# probs_y is a 2-D array of probability of being labeled as 0 (first
column of
array) vs 1 (2nd column in array)
from sklearn.metrics import precision_recall_curve
precision, recall, thresholds = precision_recall_curve(test_y, probs_y[:,
1])
#retrieve probability of being 1(in second column of probs_y)
pr_auc = metrics.auc(recall, precision)
plt.title("Precision-Recall vs Threshold Chart")
plt.plot(thresholds, precision[: -1], "b--", label="Precision")
plt.plot(thresholds, recall[: -1], "r--", label="Recall")
plt.ylabel("Precision, Recall")
plt.xlabel("Threshold")
plt.legend(loc="lower left")
plt.ylim([0,1])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句