XGBRegressor, использующий конвейер - PullRequest
1 голос
/ 27 сентября 2019

Я использую XGBRegressor с конвейером.Конвейер содержит этапы предварительной обработки и модель ( XGBRegressor ).

Ниже приведены этапы предварительной обработки.(Я уже определил numeric_cols и cat_cols )

numerical_transfer = SimpleImputer()
cat_transfer = Pipeline(steps = [
   ('imputer', SimpleImputer(strategy = 'most_frequent')),
   ('onehot', OneHotEncoder(handle_unknown = 'ignore'))
   ])
preprocessor = ColumnTransformer(
   transformers = [
   ('num', numerical_transfer, numeric_cols),
   ('cat', cat_transfer, cat_cols)
   ])

И последний конвейер будет

my_model = Pipeline(steps = [('preprocessor', preprocessor), ('model', model)])

Когда я пытался уместиться без использования early_stopping_rounds , код работал нормально.

(my_model.fit(X_train, y_train))

Но когда я использую early_stopping_rounds , как показано ниже, я получаю ошибку.

my_model.fit(X_train, y_train, model__early_stopping_rounds=5, model__eval_metric = "mae", model__eval_set=[(X_valid, y_valid)])

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

 model__eval_set=[(X_valid, y_valid)]) and the error is

ValueError: DataFrame.dtypes for data must be int, float or bool.
Did not expect the data types in fields MSZoning, Street, Alley, LotShape, LandContour, Utilities, LotConfig, LandSlope, Condition1, Condition2, BldgType, HouseStyle, RoofStyle, RoofMatl, MasVnrType, ExterQual, ExterCond, Foundation, BsmtQual, BsmtCond, BsmtExposure, BsmtFinType1, BsmtFinType2, Heating, HeatingQC, CentralAir, Electrical, KitchenQual, Functional, FireplaceQu, GarageType, GarageFinish, GarageQual, GarageCond, PavedDrive, PoolQC, Fence, MiscFeature, SaleType, SaleCondition

Означало ли это, что я должен предварительно обработать X_valid перед применением к my_model.fit (), или я сделал что-то не так?

Если проблема в том, что мынужно предварительно обработать X_valid перед применением fit (), как это сделать с препроцессором, который я определил выше?

Редактировать: я пытался предварительно обработать X_valid без конвейера, но я получил ошибку, сообщая о несоответствии функций.

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