Как маркировать несколько столбцов для поезда и тестового набора отдельно - PullRequest
0 голосов
/ 13 мая 2018

Я строю модель случайного леса, и в моем наборе тренировочных данных есть 3 категориальные переменные. sklearn RandomForest не допускает категориальных переменных в модели

Я использовал Labelencoder (), чтобы преобразовать эти переменные в числовую переменную, используя fit_transform для набора поездов, но я получаю ошибку при выполнении преобразования в тестовом наборе

from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
X_train.apply(le.fit_transform)

X_test.apply(le.transform)

Я получаю сообщение об ошибке ниже:

ValueError: ("y содержит новые метки: ['female' 'male']", "произошло с индексом Sex ')

1 Ответ

0 голосов
/ 13 мая 2018

Похоже, у вас есть опечатка в столбце Sex, одно из значений выглядит как ['female' 'male'] вместо чего-то вроде ['female', 'male'] (обратите внимание, что в первом случае два значения не разделены запятая, и поэтому не читаются как отдельные элементы). Убедитесь, что вы исправили эту опечатку, прежде чем применить train_test_split или разбить данные, как бы вы это ни делали. Например, вы можете посмотреть на df.Sex.unique() (где df - ваш набор данных) и убедиться, что у вас есть только ожидаемые значения ['male', 'female']

Основная ошибка заключается в том, что LabelEncoder находит значение в вашем X_test, которое не найдено в вашем X_train, поэтому оно не знает, как его преобразовать (поскольку вы помещаете LabelEncoder только на значения найдены в X_train). Это может произойти, только если у вас есть очень редкие значения в вашем наборе данных (в этом случае вы можете пересмотреть свои данные или обработать их соответствующим образом), но , если , вы хотите полностью избежать этого одним из приемлемых вариантов будет подгонка LabelEncoder до , когда вы разделите данные на train и test

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