Я делаю алгоритм прогнозирования машинного обучения, чтобы предсказать победителя Кубка мира I CC в 2023 году (при условии, что чемпионат мира будет ...). Я использую случайный лесной классификатор, чтобы предсказать исход матча между двумя командами на основе их предыдущего результата, их рейтинга I CC и количества раз, которые они играли в этом конкретном c месте. Я проанализировал все свои данные и создал единый набор данных со всеми необходимыми параметрами
Это мой исходный набор данных:
score.tail()
Team_1 Team_2 Winner Ground Match_Day Match_Month Match_Year Host_Country
2588 New Zealand West Indies New Zealand Wellington 9 Jan 2000 New Zealand
2589 Australia Pakistan Pakistan Brisbane 9 Jan 2000 Australia
2590 New Zealand West Indies New Zealand Napier 6 Jan 2000 New Zealand
2591 New Zealand West Indies New Zealand Taupo 4 Jan 2000 New Zealand
2592 New Zealand West Indies New Zealand Auckland 2 Jan 2000 New Zealand
Это набор данных рейтинга I CC:
ranking
Country Previous_Ranking Current_Ranking
0 England 1 1
1 India 2 2
2 New Zealand 4 3
3 South Africa 3 4
4 Australia 5 5
5 Pakistan 6 6
6 Bangladesh 7 7
7 Sri Lanka 9 8
8 West Indies 8 9
9 Afghanistan 10 10
После того, как я проанализировал все наборы данных и изменил все строковые значения для классификатора случайного леса (может ли кто-нибудь также помочь мне понять, почему это необходимо), набор данных выглядит примерно так:
classification_dataset.head(10)
Team_1 Team_2 Winner Venue
0 1 2 1 1
1 1 2 2 1
2 1 5 1 1
3 1 5 1 1
4 1 5 1 1
5 1 5 1 1
6 1 8 1 1
7 1 8 1 1
8 1 8 0 1
9 1 8 1 1
Названия команд были заменены их рангом, победителем является 0, 1, 2, что означает, что он был ie, команда 1 победила или команда 2 победила. Место проведения - 1 или 2 и указывает, сыграла ли команда 1 больше матчей в этом c месте или команде 2.
Это мой код классификатора:
X = classification_dataset.drop(['Winner'], axis=1)
y = classification_dataset["Winner"].tolist()
# Separate train and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=42)
rf = RandomForestClassifier(n_estimators=100, max_depth=20, random_state=0)
rf.fit(X_train, y_train)
score = rf.score(X_train, y_train)
score2 = rf.score(X_test, y_test)
print("Training set accuracy: ", '%.3f'%(score))
print("Test set accuracy: ", '%.3f'%(score2))
Мой вывод:
Training set accuracy: 0.680
Test set accuracy: 0.000
FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
score = y_true == y_pred
Подскажите, пожалуйста, как исправить эту ошибку? Спасибо