python - 如何从 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)
情节是空的。请告诉我我做错了什么。
查尔斯
解决方案
直接来自这个 Github 问题线程:https ://github.com/scikit-optimize/scikit-optimize/issues/751
BayesSearchCV 不适用于收敛绘图。但是,您可以使用 *SearchCV 的 cv_results_ 属性,将其转换为 pandas(应该只是从 cv_results_ 属性创建数据帧),然后可视化不同迭代的估计器性能。该属性类似于 GridSearchCV:
这是一个这样做的例子:
推荐阅读
- node.js - 未经授权的用户可以在环回中访问相关模型
- c++ - 如何初始化使用 auto 关键字声明的循环计数器?
- scala - Scala Async 和 Wartrremover
- python - 一个带有条件的 for 循环 - 试图使它成为一个内衬
- django - Django 审计日志用户媒体文件访问
- angular - 在 ng 生产构建后,在 componentFactoryResolver 中获取未匹配对象
- apache-spark - 当会话在写入期间被终止时,Spark saveAsTable 是否会回滚?
- java - 如何计算 Java 数组的内存大小?
- javascript - 如何从消费者更新提供者中的上下文值?
- java - 从 Java 程序调用 Kotlin 时找不到 kotlin-reflection.jar