网格搜索与k近邻算法中更多超参数

p这个超参数只有在weights = "distance"的时候才有意义

对于一些超参数之间是存在一定依赖关系


sl为我们封装了一个专门网格搜索的方式

Grid Search

首先我们要定义我们搜索的参数

对于我们要搜索的参数,我们定义成param_grid

这是一个数组, 对于数组中每一个元素相应是一个字典,每一个字典就是我们要进行的一组网格搜索,每一组网格搜索相应要列上这一组网格搜索每一个参数对应的取值范围。

创建一个我们要进行网格搜索对应的机器学习的算法

knn_clf = KNeighborsClassifier()

调用网格搜索方式

from sklearn.model_selection import GridSearchCV

grid_search = GridSearchCV(knn_clf,param_grid)

第一个参数是哪一个算法,第二个是网格搜索

%%time

grid_search.fit(X_train,y_train)


gird_search.best_estimator_


返回了最佳的参数


和我们上一次做的不一样,因为用了更复杂的方式CV(交叉验证)

CV是更加准确的

知道最佳分类器的准确度到底多少?

grid_search.best_score_

得到0.98538622129436326

grid_search.best_params_


多加了一个下划线,这是简单的代码原则,不是用户输入的参数

而是用户的算数计算出来的结果,这样的数据都用_结尾

拿到最佳参数对应的分类器

knn_clf = gird.search.best_estimator_这样的返回值就是KneighborsClassifier分类器

我们用

knn_clf.predict(X_test)

就得到此时我们kNN的预测结果


这就是完整使用sl来进行网格搜索寻找最佳超参数的方式


对于GridSearchCV我们还可以传入更多参数,来帮我们更好理解整个搜索过程包括性能上的提速


n_jos

我们创建很多分类器是可以并行处理的

n_jobs就是决定了对你计算器分配几个核来进行并行处理的过程默认为1(单核),如果计算机多核可以设置为2,有4个核可以传4或者3或者2

传-1代表所有核都用于网格搜索


verbose:对搜索过程进行输出,如果我们能看到他每一步搜索每一个参数相应的一些讯息的话,可以帮我们更好理解搜索过程,对应一些大的数据,使用复杂的算法,一个搜索可能运行几个小时,这种情况下有一些输出帮我们了解现在的搜索状态是非常重要的,verbose传入整数越大,就相应信息越小,通常使用2

再用grid_search.fit(X_train,y_train)


60 candidates表示60组参数


时间变快了,因为我们用的是双核

我们可以用更多的距离定义更多的超参数


metric参数:默认minkowskl 

我们可以修改这个参数

他被DistanceMetric定义


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值