1

Я пытаюсь сделать классификацию с несколькими метками, используя функцию cross_val_score sklearn (http://scikit-learn.org/stable/modules/cross_validation.html).Как получить оценку F1 на ярлык с использованием cross_validation Sklearn (классификация с несколькими метками)

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

Я хочу, чтобы F1-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'>) 

Я предполагаю, что эта ошибка возникает из-за cross_val_score ожидает число, которое будет возвращено. Есть ли другой способ, которым я могу использовать cross_val_score, чтобы получить оценку F1 на ярлык?

+0

Возможный дубликат [F1-score для каждого класса для классификации нескольких классов] (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) 

Как правило, это дает мне все значения в необходимости оценивать эффективность своей модели.

 Смежные вопросы

  • Нет связанных вопросов^_^