Кодирование строк с предварительной обработкой Sklearn дает ошибку - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь использовать библиотеку обучения SK и кодировать строки, чтобы я мог запустить регрессионный анализ и предсказать победителя, но это дает мне ошибку в кодировке toss_winner (см. Прилагаемое изображение, где победитель подбрасывается как 12, где конкурирующие команды закодированы как 6 и 11 Код выхода )

Я использую набор данных IPL publi c и новичка ie в науке о данных, поэтому вам нужна ваша помощь и оцените простые ответы, чтобы объяснить: )

Используемый код:

from sklearn import preprocessing
encoder= preprocessing.LabelEncoder()
matchdf["Team1"]=encoder.fit_transform(matchdf["Team1"])
matchdf["Team2"]=encoder.fit_transform(matchdf["Team2"])
matchdf["match_winner"]=encoder.fit_transform(matchdf["match_winner"])
matchdf["Toss_Winner"]=encoder.fit_transform(matchdf["Toss_Winner"])  

тогда цель состоит в том, чтобы найти отношение к команде 1 и команде 2 в других столбцах, как показано ниже, а затем построить, обучить и протестировать модель

matchdf.loc[matchdf["match_winner"]==matchdf["Team1"],"Team1_winning"]=1
matchdf.loc[matchdf["match_winner"]!=matchdf["Team1"],"Team1_winning"]=0

#outcome variable team1_toss_win as a value of team1 winning the toss
matchdf.loc[matchdf["Toss_Winner"]==matchdf["Team1"],"Team1_toss_winning"]=1
matchdf.loc[matchdf["Toss_Winner"]!=matchdf["Team1"],"Team1_toss_winning"]=0

1 Ответ

0 голосов
/ 09 апреля 2020

Я не очень хорошо понимаю, как вы используете fit_transform метод LabelEncoder, так как я думал, что каждый fit сотрет ранее запомненные метки. Я не могу сказать, является ли это ошибкой или чем-то другим. Возможно, ваш вклад уже вызвал проблему, которую вы демонстрируете, то есть победителя матча уже нет в списке участников? Может быть, это плохо отформатированная строка (с завершающими пробелами или чем-то?)

Поэтому я предлагаю вместо этого сначала подогнать LabelEncoder всеми возможными метками, а затем преобразовать столбцы:

from sklearn import preprocessing
encoder= preprocessing.LabelEncoder()
team_values = matchdf[["Team1", "Team2"]].values.ravel()
unique_team_values =  pd.unique(team_values)
encoder.fit(team_values)
matchdf["Team1"]=encoder.transform(matchdf["Team1"].values)
matchdf["Team2"]=encoder.transform(matchdf["Team2"].values)
matchdf["match_winner"]=encoder.transform(matchdf["match_winner"].values)
matchdf["Toss_Winner"]=encoder.transform(matchdf["Toss_Winner"].values)  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...