本系列是《玩转机器学习教程》一个整理的视频笔记。本小节主要介绍使用sklearn网格搜索寻找最好的超参数以及kNN计算两个数据点距离的其他距离定义。
sklearn网格搜索
使用网格搜索的方式来找最好的超参数。在前面一个小节中,我们通过自己写的for循环来寻找最好的超参数。但是超参数之间并不都是相互独立的,有些超参数之间是存在相互依赖的关系的。比如在前一小节中超参数p,只有在weights参数为"distance"的时候才有意义。
为了更方便的让我们通过网格搜索的方式来寻找最好的超参数,sklearn为我们封装了一个专门进行网格搜索的方式叫:“Grid Search”。
在使用Grid Search之前,我们要定义需要进行搜索的参数。将搜索的参数定义在一个param_grid列表中:
超参数之间的依赖关系,通过定义在相同字典中来表示的。只有在weights = "distance"的时候超参数p才有意义。
通过grid_search获取最优分类精度以及分类参数:
获取网格搜索后最好的模型,其实看第9个cell已经看出,grid_search.best_estimater_返回的是拥有通过网格搜索得到最好超参数的kNN对象,因此可以将其直接赋值,通过赋值后的对象进行一些列kNN操作。
sklearn的Grid Search其他参数
Sklearn中Grid Search中其他重要参数:
kNN更多距离定义
定义训练集中的数据点与新的数据点之间的距离,默认使用的是明科夫斯基距离,对应的p = 2,也就是欧拉距离的定义,当然kNN中还有其他距离可以使用:
在定义kNN对象的时候,有一个metric的参数,默认使用的是明科夫斯基距离,我们可以传入其他的值来定义其他的距离。传入的参数是一个字符串,此时在sklearn中被DistanceMetric这个类定义。
本文分享自 AI机器学习与深度学习算法 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!