2

scikit-learn で不均衡なクラスを処理する標準的な方法はありますか?

sk-learn の利点の 1 つは、一貫したインターフェイスがあることです...

ただし、クラスが不均衡な場合[これはかなり一般的なユースケースのようです)、これは当てはまりません: IMO は分類を必要としませんが、auc_score (または同様のもの) を計算できるように 0 と 1 の間の連続変数を必要とします。

したがって、ロジスティックおよび他のいくつかの分類子で auc_score(y,cf.predict_probas(X)) を実行できますが、任意の decision_function に対して基本的に同じことを実行できない理由はわかりません [例 RidgeClassifier ... など] 、つまり、しきい値を変更し、誤報、ヒット率を監視しますか?

人々はこれをどのように行うのですか?これは私がやっていることです(オグリセルも提案したように)

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)
4

1 に答える 1

1

を使用decision_functionするとうまくいくはずですが、そうでなければこれはバグです。

于 2013-07-02T15:04:01.207 に答える