Как использовать лучший оценщик из конвейера, чтобы предсказать набор тестов? - PullRequest
0 голосов
/ 16 июня 2019

Я разработал конвейер, используя XGBoost, который дал мне лучшую оценку.Однако при попытке использовать этот лучший оценщик для прогнозирования моего набора тестов возникает следующая ошибка: «ValueError: Указание столбцов с использованием строк поддерживается только для панелей данных».

Ниже приведен мой код для конвейера, который яиспользовали: Примечание: ct - это просто ColumnTransformer, использующий SimpleImputer и OneHotEncoder для категориальных столбцов, а также SimpleImputer и StandardScaler для числовых столбцов

ml_step_1 = ('transform', ct)
ml_step_2 = ('pca', PCA())
xgb = ('xgb', XGBRegressor())
xgb_pipe = Pipeline([ml_step_1, ml_step_2, xgb])
xgb = RandomizedSearchCV(xgb_pipe, xgb_param_grid, cv=kf, scoring='neg_mean_absolute_error');
xgb.fit(train_full_features, train_full_target);

Выполнение следующего конвейера, вот лучшая оценка, которую я получил:

Best XGBoost parameters: {'xgb__silent': True, 'xgb__n_estimators': 1000, 'xgb__max_depth': 4, 'xgb__learning_rate': 0.09999999999999999, 'transform__num__imputer__strategy': 'median', 'transform__cat__imputer__strategy': 'most_frequent', 'pca__n_components': 68}

Теперь я назвал этот лучший оценщик и сделал следующее:

test_full_imp = pd.DataFrame(xgb.best_estimator_.named_steps['transform'].transform(test_full))
test_final = xgb.best_estimator_.named_steps['pca'].transform(test_full_imp)
predictions = xgb.best_estimator_.predict(test_final)

1 Ответ

0 голосов
/ 16 июня 2019

После пары испытаний я выяснил, что не так: Просто введите:

xgb._best_estimator_.named_steps['xgb'].predict(test_final)
...