2

次のスコアリング関数を定義するとします。

def multi_label_macro_auc(y_gt, y_pred):
    n_labels = y_pred.shape[1]
    auc_scores = [None] * n_labels

    # Convert the multi-class ground truth to a binary ground truth
    # by iterating through the labels
    for label in xrange(n_labels):
      auc_scores[label] =  roc_auc_score((y_gt == label)*1, y_pred[:,label])
    return np.mean(auc_scores)

ml_macro_auc_s   = make_scorer(multi_label_macro_auc, greater_is_better=True, 
                               needs_threshold=False, needs_proba=True)

そして、DummyClassifier私は自分のデータで a を学びます:

dummy_clf = DummyClassifier(strategy='stratified',random_state=0)
dummy_clf.fit(X,y)

次に、このダミー分類子をスコアリング関数に対してテストしようとすると、次のようになります。

ml_macro_auc_s(dummy_clf, X, y)

scikit-learn は次のように文句を言います:

"ValueError: AUC is defined for binary classification only"

に を渡そうとしましたprobability=TrueDummyClassifier、そのパラメーターを受け入れないようです:

dummy_clf = DummyClassifier(strategy='stratified'',random_state=0, probability=True)

ソフト出力を必要とする独自のスコアラーを に適用するにはどうすればよいDummyClassifierですか?

アップデート:

  • y範囲内の値を持つ 1D 配列です[0,1,2]
  • Xy と同じ数の行と列を持つ特徴配列125です
4

0 に答える 0