#python #machine-learning #scikit-learn #random-forest
#питон #машинное обучение #scikit-учиться #случайный лес
Вопрос:
Поэтому я использую некоторые данные для создания модели случайного леса. Существует несколько категориальных столбцов, и я меняю их на числовые, используя sklearn LabelEncoder. Например, «мужчина» и «женщина» с меткой be как «0» и «1» соответственно. Затем я использую модель для прогнозирования отдельных данных. Прежде чем прогнозировать данные, я также меняю категориальный на числовой. Затем я понимаю, что метка всегда одинакова для отдельных данных, даже категориальные данные разные. Например (единичные данные), мужчина и женщина помечены как «0», а остальные тоже одинаковые. Это делает мою модель непригодной для использования. Должен ли я просто сделать руководство по этикетке или у меня есть какая-то идея?
часть кода
label = LabelEncoder()
train_data['gender'] = label.fit_transform(train_data['gender'])
train_data['ever_married'] = label.fit_transform(train_data['ever_married'])
train_data['work_type'] = label.fit_transform(train_data['work_type'])
train_data['Residence_type'] = label.fit_transform(train_data['Residence_type'])
train_data['smoking_status'] = label.fit_transform(train_data['smoking_status'])
Комментарии:
1. попробуйте подсчитать кодировщик contrib.scikit-learn.org/category_encoders/count.html
2. использование labelencoder таким образом приведет к множественным значениям числа, т.Е. 0 может означать «мужчина», а также «женат», … и т.д.,
Ответ №1:
Я думаю, это потому, что вы всегда используете метод fit_transform в одном и том же экземпляре encoder
Вы должны использовать другой кодер меток для каждой категории с помощью метода fit
, а затем преобразовать ваш единственный экземпляр с помощью этого кодера с помощью его transform
кодера метода
encoder_gender = LabelEncoder()
train_data_gender = encoder_gender.fit_transform(train_data['gender'])
encoder_gender.transform(single_data)
Если вы вызываете fit_transform
с одним и тем же экземпляром encoder ( label
в вашем случае) для разных категорий, вы каждый раз меняете значение этого кодера и способ, которым он кодирует данные