Как исправить эту ошибку: «Не удалось выполнить поэлементное сравнение» в Pandas? - PullRequest
0 голосов
/ 17 июня 2020

Я делаю алгоритм прогнозирования машинного обучения, чтобы предсказать победителя Кубка мира 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

Подскажите, пожалуйста, как исправить эту ошибку? Спасибо

...