Как рассчитать оценку F1 или оценку точности для модели, в которой данные обучения и тестирования хранятся в двух разных csv-файлах?

#python #machine-learning #classification

Вопрос:

Я новичок в области машинного обучения. Я решаю постановку задачи для прогнозирования победителя матча IPL , для которого даны два csv-файла(данные обучения и данные тестирования в виде двух отдельных csv-файлов). Данные обучения содержат около 700 записей, а данные тестирования-60 записей. Целевая переменная(победитель) отсутствует в testdf

Я попробовал классификатор случайных лесов. Ниже приведен код:

 predictor_var=['team1','team2','city','venue','toss_decision','toss_winner']

outcome_var=['winner']

from sklearn.ensemble import RandomForestClassifier

randomForest1= RandomForestClassifier(n_estimators=100)

randomForest1.fit(traindf[predictor_var],traindf[outcome_var])

pred=randomForest1.predict(testdf[predictor_var])
 

Итак, как я могу получить оценку F1 и при отправке вышеуказанного прогноза я получаю следующее предупреждение:

Неопределенное предупреждение: F-оценка определена неверно и установлена на 0.0 в метках без прогнозируемых выборок. «точность», «прогнозируемый», средний, warn_for)

Комментарии:

1. Как предлагается в ответе, используйте параметр zero_division для управления этим поведением. Главное, что у ypred могут быть разные метки, но в y_true могут быть метки, которые не были предсказаны по крайней мере один раз.

Ответ №1:

Это предупреждение возникает из y_true -за того, что содержит метки, которых нет в ваших прогнозах ( y_pred ), как в примере ниже:

 import numpy as np
from sklearn.metrics import classification_report

y_pred = np.ones(10,)
y_true = np.ones(10,)
y_true[0]=0
print(classification_report(y_true,y_pred))
 

Вы можете удалить это предупреждение, установив classification_report аргумент zero_division=1 .

Но неразумно игнорировать это, так как это показывает, что у вас есть проблема с вашим классификатором.