#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
.
Но неразумно игнорировать это, так как это показывает, что у вас есть проблема с вашим классификатором.