Как использовать только все функции для обучения, но только 2 функции для тестирования с SciKit обучения? - PullRequest
0 голосов
/ 22 ноября 2018

Я строю модель машинного обучения для прогнозирования результатов Премьер-лиги (футбол / футбол), используя этот набор данных , который имеет такие функции, как домашние голы, выездные голы, удары по воротам и т. Д. Это мой кодв настоящее время после того, как я загрузил набор данных:

features = list(data.columns.values)
X, y = data[features], data.FTR     #FTR stands for Full Time Result
print(X.shape)
  -> (4940, 20)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=18)
nb = GaussianNB()
nb.fit(X_train, y_train)
y_nb = nb.predict(X_test)

Это дает очень хорошую точность (72%), но это потому, что когда я спрашиваю модель, чтобы предсказать результат, я даю ей доступ кстатистика (включая забитые голы) из матча, который я пытаюсь предсказать.Есть ли способ «спрятать» все функции, кроме домашней команды и команды гостей, и прогнозировать результаты таким образом?

Я пытался сделать это:

 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=18)
 X_test = X_test.iloc[:, [0, 1]] #this only keeps the column with home team name and away team name
 nb = GaussianNB()
 nb.fit(X_train, y_train)
 y_nb = nb.predict(X_test)

Однако этовыдает следующую ошибку:

ValueError: operands could not be broadcast together with shapes (988,2) (20,) 

1 Ответ

0 голосов
/ 24 ноября 2018

Если вы хотите сохранить всю информацию, предоставляемую вашими функциями, рассмотрите возможность использования средних значений или какого-либо исторического показателя внутриигровой статистики до обучения вашей модели.т. е. если команда А забила 2, 3 и 1 гол в последних трех матчах до того, как забила 5 в игре, в которой вы тренируетесь, используйте среднее значение за последние три игры вместо фактического общего количества голов.Ваша ошибка в обучении может быть выше, но тогда, когда вы будете предсказывать новую игру, вы все равно сможете использовать как можно больше данных.

Когда вы пытаетесь обучить модель в качестве предиктора, как сказал @desertnaut, используйте только те переменные, которые будут вам доступны, когда вы собираетесь запустить прогнозирование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...