【问题标题】:Access intermediate (and final) model transformation of a GridSearch访问 GridSearch 的中间(和最终)模型转换
【发布时间】:2019-04-11 22:57:28
【问题描述】:

假设我有一个 sklearn 管道:

A(X) -> B(A(X)) -> C(B(A(X)))

grid_search = GridSearchCV(pipeline, param_grid)

我对超参数运行网格搜索以找到最佳模型。是否有内置功能来输出模型的中间和最终步骤?我想我可以使用在相同数据上发现的最佳参数以及每个步骤的结果重新运行管道,但也许这已经存在,例如:

grid_search.best_params.X_output_()

grid_search.step_A.output_()

我的最终目标是在每个转换步骤中可视化发现的最佳参数如何影响输入数据X

【问题讨论】:

  • 不,这不存在。管道有some functionality of caching 内部转换器,但由于 GridSearchCV 会将数据分成多个部分(根据cv 参数),我看不出它(或您想要的任何其他东西)在这里是否有用。
  • 最佳参数是从这些参数在不同数据折叠中的平均性能中找到的。因此,试图将这些事情形象化并不容易。您最好对您想要查看的数据(可能是也可能不是相同的数据)重新运行管道

标签: python scikit-learn grid-search


【解决方案1】:

可能你需要cv_results_


玩具示例:

from sklearn import svm, datasets
from sklearn.model_selection import GridSearchCV

iris = datasets.load_iris()
parameters = {'kernel':('linear', 'rbf'), 'C':[1, 10]}
svc = svm.SVC()
clf = GridSearchCV(svc, parameters)
clf.fit(iris.data, iris.target)


clf.cv_results_

您可以访问以下信息:

sorted(clf.cv_results_.keys())

['mean_fit_time', 'mean_score_time', 'mean_test_score', 'mean_train_score','param_C','param_kernel','params', 'rank_test_score','split0_test_score','split0_train_score', 'split1_test_score','split1_train_score','split2_test_score', 'split2_train_score','std_fit_time','std_score_time', 'std_test_score', 'std_train_score']

【讨论】:

  • 这仅包含网格搜索的分数和时间,而不是转换后的输入数据
  • 这是真的。我只看到一种方法可以做你想做的事。通过拆分数据手动执行此操作,然后使用循环进行参数网格搜索。
猜你喜欢
  • 2019-06-09
  • 2018-10-20
  • 2019-08-26
  • 2018-11-04
  • 2021-07-23
  • 1970-01-01
  • 1970-01-01
  • 2020-04-16
  • 1970-01-01
相关资源
最近更新 更多