Самый простой способ - использовать scikit-learn
.
На официальной документации вы можете увидеть следующий пример (немного измененный):
from sklearn.metrics import f1_score
y_true = [0, 1, 2, 0, 1, 2]
y_pred = [0, 2, 1, 0, 0, 1]
result = f1_score(y_true, y_pred, average = None) (an array of f1-scores for each class)
result_micro = f1_score(y_true, y_pred, average='micro') (a float value)
Вам нужно обратить внимание установить для вашего параметра average
значение None
; таким образом, вы получаете F1 балл за каждый класс в отдельности. Если вы хотите получить общий балл F1 без балла F1 за класс, используйте average = 'micro'
.
. Поэтому прогнозируйте каждый элемент в testX
, добавляйте прогноз класса в список (это конструирует y_pred
из приведенного выше примера), а затем y_true
на самом деле является основной истиной, то есть testY
в вашем случае.