Я пытался создать конвейер с LabelEncoder для преобразования категориальных значений.
cat_variable = Pipeline(steps = [
('imputer',SimpleImputer(strategy = 'most_frequent')),
('lencoder',LabelEncoder())
])
num_variable = SimpleImputer(strategy = 'mean')
preprocess = ColumnTransformer (transformers = [
('categorical',cat_variable,cat_columns),
('numerical',num_variable,num_columns)
])
odel = RandomForestRegressor(n_estimators = 100, random_state = 0)
final_pipe = Pipeline(steps = [
('preprocessor',preprocess),
('model',model)
])
scores = -1 * cross_val_score(final_pipe,X_train,y,cv = 5,scoring = 'neg_mean_absolute_error')
Но это вызывает ошибку TypeError:
TypeError: fit_transform() takes 2 positional arguments but 3 were given
При дальнейших ссылках я узнал что преобразователи, такие как LabelEncoders, не должны использоваться с функциями и должны использоваться только для цели прогнозирования.
Из документации:
class sklearn.preprocessing .LabelEncoder
Кодировать целевые метки со значением от 0 до n_classes-1.
Этот преобразователь следует использовать для кодирования целевых значений, то есть y, а не входных X.
Мой вопрос: почему мы не можем использовать LabelEncoder для переменных функций и есть ли другие преобразователи, у которых есть такое условие?