SKlearn 分类器的诅咒
Posted
技术标签:
【中文标题】SKlearn 分类器的诅咒【英文标题】:Curse of the SKlearn Classifiers 【发布时间】:2020-09-09 06:45:44 【问题描述】:假设我们有 1000 颗珠子,其中 900 颗红色珠子和 100 颗蓝色珠子。当我通过 SKlearn 分类器集成运行问题时,
score = clf.score(X_test, y_test)
他们得出的分数约为 0.9,但是,当我查看预测时,我发现它预测所有这些都是红色的,这就是它得出 %90 准确率的原因!请告诉我我做错了什么?更好的是,发生这种情况意味着什么?有没有更好的方法来衡量准确性?
【问题讨论】:
【参考方案1】:当您的数据集不平衡并且您选择 accuracy
作为指标时,可能会发生这种情况。原因是always
决定红色,模型在准确性方面实际上做得很好,但正如您所注意到的,模型没用!
为了克服这个问题,您有一些替代方案,例如:
1. 使用其他指标,如 AUC(roc 曲线下面积)等。
2. 对班级使用不同的权重,对少数班级给予更多的权重。
3. 使用简单的过采样或欠采样方法,或其他更复杂的方法,如 SMOTE、ADASYN 等。
你也可以看看this article。 您面临的这个问题在现实世界的应用程序中很常见。
【讨论】:
谢谢你的解释很有帮助【参考方案2】:您有一个不平衡的分类问题。您写的是,默认情况下分数衡量准确性,但建议查看不平衡数据的召回率和精度。
This video explains it better than I could
上面的视频向您展示了如何衡量数据中的分类性能。要处理数据不平衡,请查看 imblearn 库:
https://imbalanced-learn.readthedocs.io/en/stable/api.html
【讨论】:
感谢您的解释以上是关于SKlearn 分类器的诅咒的主要内容,如果未能解决你的问题,请参考以下文章
Sklearn:评估 GridSearchCV 中 OneVsRestClassifier 的每个分类器的性能
如何确定 sklearn 中 MLP 分类器的“损失函数”?