首页 > 解决方案 > 如何从 skopt/BayesSearchCV 搜索中绘制学习曲线

问题描述

我无法从 skopt 优化中绘制学习曲线。这是我尝试过的:

from skopt.space import Real, Integer, Categorical
from skopt.utils import use_named_args
from skopt import BayesSearchCV
from skopt.plots import plot_convergence

rf = RandomForestRegressor(random_state =7, n_jobs=4)
def RunSKOpt(X_train, y_train):  
    hyper_parameters =  {"n_estimators":      (5, 500),
                         "max_depth":         Categorical([3, None]),
                         "min_samples_split": (2, 10),
                         "min_samples_leaf":  (1, 10)
                        }

    search = BayesSearchCV(rf,
                           hyper_parameters,
                           n_iter = 40,
                           n_jobs = 4,
                           cv = 10,
                           verbose = 1,
                           return_train_score = False
    )
    return search

search = RunSKOpt(X_train, y_train)
search.fit(X_train, y_train)

plot_convergence(search)

情节是空的。请告诉我我做错了什么。

查尔斯

标签: pythonoptimizationscikit-learn

解决方案


直接来自这个 Github 问题线程:https ://github.com/scikit-optimize/scikit-optimize/issues/751

BayesSearchCV 不适用于收敛绘图。但是,您可以使用 *SearchCV 的 cv_results_ 属性,将其转换为 pandas(应该只是从 cv_results_ 属性创建数据帧),然后可视化不同迭代的估计器性能。该属性类似于 GridSearchCV:

这是一个这样做的例子:

在此处输入图像描述


推荐阅读