5. KNN算法之 超参选择(交叉验证网格搜索)
交叉验证、网格搜索的目的都是寻找最优超参知道交叉验证是什么?知道网格搜索是什么?知道交叉验证网格搜索API函数用法能实践交叉验证网格搜索进行模型超参数调优利用KNN算法实现手写数字识别1. 交叉验证交叉验证 本质上就是复验即重复校验多验几回最后求均值交叉验证法是划分数据集的一种方法目的就是为了得到更加准确可信的模型评分。图示交叉验证也叫几折验证将数据集分成n份图中分成了4份即 4折交叉验证分成了几份就叫几折验证第一次把第一份当做验证集即测试集其他的当做训练集来训练模型训练之后再用第一份的验证集进行验证得到 80%的正确率第二次把第二份当验证集、其他的当做训练集重新对模型进行训练、进行预测了又会得到一个78%的正确率第三次拿第3份做验证、第四次拿第4份做验证一共验证了4次。4折就是4次几折就是几次。在划分之前只做一次80%就作为最终得分、但现在4折是验证了4次就要算一下几个值的平均值78.75作为最终的结果。如果哪一次最好再使用全部的训练集对它再做一次训练训练完后在使用测试假设最后一次得分最高拿总的4份做训练最后的一份(红色部分’验证集’)做测试即谁得分最好在使用全部的对它再训练一次再做一次评估2. 网格搜索简述图示交叉验证是多验几回最后求均值上图交叉验证图里面的k与KNN算法中的K不是一个前者k只是把数据分成几份、KNN中的K表示找最近的K个邻居(样本)交叉验证就是复验复验几次而网格搜索才是找最有超参什么是最有超参KNN算法中创建模型对象estimatorKNeighborsClassifier(n_neighbors3)中的3这种用户手动录入的变化的数据就称为超参。为什么叫网格搜索因为模型有很多超参其能力也存在着很大的差异如 n_neighbors3时准确率可能是93.多5准确率可能96.多所以需要手动产生很多超参的组合此种模型只有一个参数即3但可能模型需要3个参数那组合方式有2的3次方8种所以网格搜索时帮忙寻找最有超参为什么每组超参都采用交叉验证评估假如拿着3这个参数只测一回不能说明最终的准确率因为要复验多测几次当 n_neighbors[1,2,3,5,7]结合4折验证程序共执行了20次因为每一个参数都要经过4折验证4折验证就是4回则一共执行4*520回[1,2,3,5,7]结合不同折的验证效果会不一样如4折验证时可能2最好7折验证时可能5最好所以网格搜索时帮忙寻找最优超参。网格搜索时模型调参的有力工具啥叫模型调参n_neighbors3为什么3不等于其他值此为模型调参。将来寻找最有超参可使用网格搜索交叉验证。为什么叫网格搜索本来是n_neighbors3参数值只有一个3它会像网格一样划分很多值如 [1,2,3,5,7]每个参数都结合交叉验证去验证哪个参数最好像网格一样将参数隔开去做排列组合API解释