#python #cross-validation
Вопрос:
Я реализую пользовательский класс методов ML, который представляет собой комбинацию Лассо и Случайного леса, он выглядит следующим образом:
- Я помещаю лассо в свои данные с помощью некоторой лямбды
- Я запускаю Случайный лес по остаткам предсказаний Лассо с помощью некоторых гиперпараметров
- Прогноз модели равен сумме прогнозов с шагов 1 и 2
- используйте перекрестную проверку временных рядов (скользящее окно) для настройки параметров как для Лассо, так и для RF одновременно
У меня возникли проблемы с разработкой поиска по сетке для этого алгоритма, есть ли в python инструмент, который я могу легко использовать для настройки параметров, не кодируя все это самостоятельно?
Код для метода в текущем состоянии, где перекрестная проверка происходит локально, отдельно для RF и Лассо, моя цель-создать глобальную сетку-поиск обоих методов вместе:
lasso_cv = Lasso(fit_intercept=True, normalize=False)
tscv = TimeSeriesSplit(n_splits=5)
b = np.linspace(-10, 10, 50)
b = b.tolist()
lasso_params = {'alpha': b}
grid = GridSearchCV(lasso_cv, lasso_params, cv=tscv,
refit=True,
n_jobs=-1)
grid.fit(X_train, Y_train.ravel())
errors = grid.best_estimator_.predict(X_train)
errors = Y_train - errors.reshape(-1,1)
rf = RandomForestRegressor(random_state=1234)
param_search = {"max_depth": [10, None],
"n_estimators": [100, 500],
"max_features": ['auto', 10]
}
grid1 = GridSearchCV(rf, param_search, cv=tscv,
refit=True,
n_jobs=-1)
grid1.fit(X_train, errors.ravel())
p = X.tail(1).to_numpy()
p = pd.DataFrame(p).to_numpy()
pred = grid.best_estimator_.predict(p.reshape(1, -1)) grid1.best_estimator_.predict(p.reshape(1, -1))
Комментарии:
1. вы смотрели на это ?
2. Почему бы вам не инкапсулировать лассо и случайный лес в классе? Если этот класс следует рекомендациям sklearn о расширении класса классификатора, GridSearchCV должен работать.