Настройка гиперпараметров с помощью пользовательского метода ML

#python #cross-validation

Вопрос:

Я реализую пользовательский класс методов ML, который представляет собой комбинацию Лассо и Случайного леса, он выглядит следующим образом:

  1. Я помещаю лассо в свои данные с помощью некоторой лямбды
  2. Я запускаю Случайный лес по остаткам предсказаний Лассо с помощью некоторых гиперпараметров
  3. Прогноз модели равен сумме прогнозов с шагов 1 и 2
  4. используйте перекрестную проверку временных рядов (скользящее окно) для настройки параметров как для Лассо, так и для 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 должен работать.