GridSearchCV中对训练数据集进行fit后,为什么就可以得到最佳超参数了?
来源:4-6 网格搜索与k近邻算法中更多超参数

chanchan666
2020-01-27
我理解的比较模型accuray,需要先根据X_train,y_train数据fit,然后根据X_test, y_test数据来predict,才能得到score。然后比较每一组超参数的score.
但是视频中只有一步fit.就得到了score.所以实际上这个fit内部包含度对数据集的train_test_split操作吗?
还有一个问题?为啥我使用scikit-learn中的网格搜索,结果很奇怪呢?
我把你的代码本地运行一遍,结果和上述一样。是scikit-learn的版本不一样吗?
1回答
-
liuyubobobo
2020-01-28
1
是的,你可以理解成 fit 内部做了 train_test_split,然后对某一组参数进行试验,记录结果,然后换一组参数,继续实验,记录结果,以此类推,最后找到了最好的那组参数。这个过程封装在了 fit 函数中。
不过,其实,GridSearchCV 内部做的不是 train_test_split,而是交叉验证(Cross Validation),对于什么是交叉验证,这个课程后续会介绍。也可以参考这里:http://coding.imooc.com/learn/questiondetail/160246.html
2
我测试了一下,是的,新的版本,对于这个数据,搜索结果是 n_neighbors 为 1 了。
对此,可以参考这里:http://coding.imooc.com/learn/questiondetail/153015.html
在课程后续,也会介绍模型复杂度的概念。整体,对于 knn 算法,k 参数建议从 3 甚至是 5 开始搜索。而新版的 sklearn 中的 KNN 算法,在封装上,默认的 k 值也从 3 变成了 5。
继续加油!:)
122020-06-12
相似问题