1

sklearnのcross_val_score関数(http://scikit-learn.org/stable/modules/cross_validation.html)を使用してマルチラベル分類を実行しようとしています。Sklearnのcross_validation(マルチラベル分類)を使用してラベルごとにF1スコアを取得する方法

scores = cross_validation.cross_val_score(clf, X_train, y_train, 
     cv = 10, scoring = make_scorer(f1_score, average = None)) 

返されるラベルごとにF1スコアが必要です。この最初の折りのための作品のようなものが、直後にエラーを与える:私はcross_val_scoreの数が返されることを期待しているため、このエラーが発生したと仮定し

ValueError: scoring must return a number, got [ 0.55555556 0.81038961 0.82474227 0.67153285 0.76494024 0.89087657 0.93502377 0.11764706 0.81611208] (<type 'numpy.ndarray'>) 

。ラベルごとにF1スコアを取得するためにcross_val_scoreを使用できる他の方法はありますか?

+0

マルチクラス分類のための[F1-得点の可能な重複](http://stackoverflow.com/questions/37615544/f1-score-per-class-for-multi-class-classification) – ncfirth

答えて

0

.../scikit-learn/sklearn/cross_validation.pyにいくつか変更を加えて問題を解決しました。より具体的には、私はこれらの行をコメントアウト:

1651  if not isinstance(score, numbers.Number): 
1652   raise ValueError("scoring must return a number, got %s (%s) instead." 
1653       % (str(score), type(score))) 

これは、タイプは、このようnumpyのアレイが通過できるように、番号であるかどうかチェックを排除します。

0

私は一般的にこれは、一般的に私に私のモデルの性能を評価する必要があるすべての値を与える

from sklearn.metrics import accuracy_score, f1_score, precision_score, recall_score, classification_report, confusion_matrix 
metrics.classification_report(y_test, y_predicted2) 

を使用しています。

関連する問題