【发布时间】:2018-03-21 12:31:58
【问题描述】:
Sklearn recommends 认为对于迭代估计器,迭代次数应由 .fit() 的 n_iter 参数指定。
使用GridSearchCV 对最优超参数运行网格搜索允许您仅指定可使用estimator.set_params() 设置的参数的值范围。
所以我想知道,如何运行网格搜索(以及其他)迭代次数?
一种解决方案是更改估算器代码,以便在构造函数中设置n_iter,并由.set_params() 设置,但由于某种原因,明确不建议这样做,如上所述。
编辑: 这是一个例子:
创建一个需要两个参数的估算器:
estimator = SomeEstimator(alpha=5, theta=0.001)
您可以使用fit() 方法在数据 X 和标签 y 上拟合估计器。此外,假设估算器运行迭代算法,您可以指定它应该运行多少次。 Sklearn 建议为此使用fit() 函数的参数n_iter:
estimator.fit(X, y, n_iter=4)
要找到 alpha 和 theta 的最佳参数值,您可以运行 GridSearchCV,它针对这些参数的所有组合运行 estimator.fit():
GridSearchCV(estimator, {'alpha':[5, 6], 'theta':[0.1, 0.01, 0.001]}).fit(X, y, n_iter=4)
这将运行 alpha/theta 组合的估算器:
(5, 0.1)
(5, 0.01)
(5, 0.001)
(6, 0.1)
(6, 0.01)
(6, 0.001)
但我想将这六种组合用于n_iter (1..10) 的不同值。当然我可以使用 for 循环,但这不是 GridSearchCV 的重点。
【问题讨论】:
-
你能用一个例子更好地解释一下吗?
-
我加了一个例子
-
好的,但是
n_iter是超参数吗?
标签: python scikit-learn grid-search