在scikit-learn中是否有处理不平衡类的标准方法?
sk学习的乐趣之一是有一个一致的界面。。。
然而,当类不平衡时(这似乎是一个非常常见的用例),情况并非如此:IMO不想要分类,而是0到1之间的连续变量,这样你就可以计算auc_score(或类似的东西)
所以我可以在逻辑和其他一些分类器上做auc_core(y,cf.predict_probas(X)),但我看不出有什么理由不能在任何决策函数上做基本相同的事情[例如RidgeClassifier…etc],即改变我的阈值并监测虚警、命中率?
人们是如何做到这一点的?这就是我正在做的(正如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)
使用decision_function
应该有效,否则这就是一个错误。