在 scikit-learn 中是否有处理不平衡类的标准方法?
sk-learn 的乐趣之一是有一个一致的界面......
但是,当类不平衡时(这似乎是一个非常常见的用例),情况并非如此:IMO 不想要分类,而是想要一个介于 0 和 1 之间的连续变量,这样您就可以计算 auc_score (或类似的东西)
所以我可以在逻辑和其他一些分类器上做 auc_score(y,cf.predict_probas(X)) 但我看不出有什么理由我不能对任何决策函数做基本相同的[例如 RidgeClassifier ...等] ,即改变我的阈值并监控误报、命中率?
人们如何做到这一点?这就是我正在做的事情(正如 ogrisel 也建议的那样)
if hasattr(clf,'predict_proba'):
proba=clf.predict_proba(X_test)[:,1]
score=metrics.auc_score(y_test,proba)
elif hasattr(clf,'decision_function'):
z=clf.decision_function(X_test)
fpr, tpr, thresholds = metrics.roc_curve(y_test, z)
score=metrics.auc(fpr, tpr)