Реализация sklearn.ensemble.GradientBoostingRegressor с помощью sklearn.multioutput.MultiOutputRegressor и sklearn.modelPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Реализация sklearn.ensemble.GradientBoostingRegressor с помощью sklearn.multioutput.MultiOutputRegressor и sklearn.model

Сообщение Anonymous »

Я пытаюсь создать модели, поддерживающие многомерный вывод. Одна из моделей, которые я пытаюсь использовать, — это GradientBoostingRegressor, которая изначально не поддерживает многомерный вывод. Существует обходной путь с помощью MultiOutputRegressor, который обеспечивает эту функциональность через какую-то «обертку». К сожалению, эта упаковка не работает при попытке выполнить настройку гиперпараметров с помощью RandomizedSearchCV.
Следующее работает:

Код: Выделить всё

model_gradboost = MultiOutputRegressor(GradientBoostingRegressor(n_estimators=100, random_state=42))
model_gradboost.fit(X_train, y_train)
y_pred_gradboost = model_gradboost.predict(X_test)
Но следующее не так

Код: Выделить всё

gradboost_n_estimators = [100, 200, 300, 400, 500, 600, 700, 800]
gradboost_max_depth = [3, 4, 5, 6, 7, 8]
gradboost_eta = [0.01, 0.02, 0.04, 0.08, 0.012, 0.16]
gradboost_max_features = ["sqrt", "log2", None]
gradboost_alpha = [0.1, 0.2, 0.4, 0.6, 0.8, 0.9]
gradboost_subsample = [0.5, 0.6, 0.7, 0.8, 0.9, 1]
gradboost_loss = ["squared_error", "absolute_error", "huber", "quantile"]

gradboost_dict_params = {
"n_estimators": gradboost_n_estimators
, "max_depth": gradboost_max_depth
, "learning_rate": gradboost_eta
, "max_features": gradboost_max_features
, "alpha": gradboost_alpha
, "subsample": gradboost_subsample
, "loss": gradboost_loss
}

model_gradboost = MultiOutputRegressor(GradientBoostingRegressor(random_state=42))
random_search = RandomizedSearchCV(model_gradboost, param_distributions=gradboost_dict_params, n_iter=200, cv=5, scoring='r2', return_train_score=True)
random_search.fit(X_train, y_train)
и вызывает ошибку, а именно:

Код: Выделить всё

ValueError: Invalid parameter 'subsample' for estimator MultiOutputRegressor(estimator=GradientBoostingRegressor(random_state=42)). Valid parameters are: ['estimator', 'n_jobs'].
Как обойти эту проблему?
Заранее спасибо.

Подробнее здесь: https://stackoverflow.com/questions/792 ... ultioutput
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»