使用GridSearchCV绘制拆分结果的图形

时间:2019-06-20 19:33:01

标签: python machine-learning cross-validation gridsearchcv

因此,我最初尝试使用时间序列并执行网格搜索。我注意到GridSearchCV使用k倍交叉验证,该采样对数据中的随机测试/训练拆分进行采样,这对于时间序列数据没有多大意义。结果,我尝试使用TimeSeriesSplit在每个拆分中自己编写代码,并遍历ParameterGrid中的参数。 在这里编码:

    def find_optimal_paramters(self, X, y, regressor, parameters, scoring_metric='MAE', greater_is_better=False):
    score_methods = {'MAE': metrics.mean_absolute_error,
                     'MSE': metrics.mean_squared_error,
                     'MSLE': metrics.mean_squared_log_error,
                     'r_qsuqred': metrics.r2_score}

    scoring_metric = score_methods[scoring_metric]

    # check if parameter list is empty and run return default params if so
    if not parameters:
        best_params = regressor.get_params()
        best_score = 0


    for e, p in enumerate(ParameterGrid(parameters)):
        regressor.set_params(**p)
        regressor.fit(X, y.ravel())
        score = scoring_metric(regressor.predict(X), y)

        if e == 0:
            best_score = score
            best_params = p

        if greater_is_better:
            if score > best_score:
                best_score = score
                best_params = p
        elif score < best_score:
            best_score = score
            best_params = p

    return best_score, best_params

我最近了解到,我可以将TimeSeriesSplit传递给cv的{​​{1}}参数,所以我尝试着使用它,因为它比我的手册版本更行之有效并且可能会运行得更快。

GridSearchCV

但是,我能够手动添加的一件事是绘制了每个分割的图形,以查看在每个测试分割上如何执行最佳参数,以便直观地看到性能。我想知道是否有一种使用gsc = GridSearchCV(RandomForestRegressor(), param_grid=RF_params, scoring=scorers, cv=TimeSeriesSplit(n_splits=5).split(X), verbose=10, n_jobs=-1, refit='mse') 的方法。看来您可以对结果进行图形处理,但是我没有发现任何可以复制这种类型输出的内容:

enter image description here

0 个答案:

没有答案