在机器学习中使用GridSearchCV进行参数调整

在机器学习中使用GridSearchCV进行参数调整

拥有不适当参数集的模型没有任何好处,选择正确的参数和设计模型一样重要。美妙之处在于,没有人知道正确的参数,通常我们凭直觉选择参数,如果它没有产生我们认为的效果,我们就使用它们然后选择另一个集合的值,然后重复这个过程。这很困难,也很耗时,GridSearchCV可以用几行代码系统地找到参数。

GridSearchCV采用了通过多个参数组合的方法来实现的方法,通过交叉验证来确定哪个调的性能最好。

下面是sklearn文档中的一个例子:

parameters = {‘kernel’:(‘linear’, ‘rbf’), ‘C’:[1, 10]}

svr = svm.SVC()

clf = grid_search.GridSearchCV(svr, parameters)

clf.fit(iris.data, iris.target)

让我们一行一行地分解它。

parameters = {'kernel':('linear','rbf'),'C':[1,10]}

一个关于参数的字典,以及它们可能采用的值。在这种情况下,他们在使用内核(可能的选择是“linear”和“rbf”),C(可能的选择是1和10)。

然后所有以下的“grid”的组合值(kernel,C)自动生成:

(' rbf ',1)(rbf,10)

(“linear”,1)(“linear”,10)

每个都用于训练SVM,然后使用交叉验证评估性能。

svr = svm.SVC()

这看起来像是创建了分类器,就像我们所做的一样。但是请注意,“clf”直到下一行才生成——这只是说明要使用哪种算法。另一种思考方式是“分类器”不仅仅是这个例子中的算法,它是算法加上参数值。注意,内核和C没有任何问题;所有这些都是在下一行中处理的。

clf = grid_search.GridSearchCV(svr, parameters)

是发生第一个神奇的地方;正在创建分类器。我们通过

clf.fit(iris.data, iris.target)

第二点神奇。函数现在尝试所有的参数组合,并返回一个被自动调优到最优参数组合的拟合分类器。现在可以通过clf.best_params_访问参数值 。

相关推荐