网易云观看地址
模型调参
调参是一门黑箱技术,需要经验丰富的机器学习工程师才能做到。幸运的是sklearn有调参的包,入门级学者也可尝试调参。
如果参数不多,可以手动写函数调参,如果参数太多可以用GridSearchCV调参,如果参数多的占用时间太长,可以用randomSizeCV调参,节约调参时间
GridSearchCV
如果参数太多可以用GridSearchCV调参
(1)单参数调参
(2)多参数调参
因为有n_neighbors和weights两个参数,因此诞生了60个结果
因为有两个参数,所以得到最佳模型:weight=distance,n_neighbor=12
RandomSizeSearchCV
randomSizeCV调参类似于GridSearchCV的抽样
如果参数多的占用时间太长,可以用randomSizeCV调参,节约调参时间。
randomSizeCV调参准确率会略低于GridSearchCV,但可以节约大量时间。
randomSizeCV调参代码
# -*- coding: utf-8 -*-"""Created on Sat Jun 16 19:54:25 2018 @author: 231469242@qq.com"""from sklearn.grid_search import RandomizedSearchCVimport matplotlib.pyplot as plt#交叉验证from sklearn.cross_validation import cross_val_scorefrom sklearn.datasets import load_breast_cancerfrom sklearn.neighbors import KNeighborsClassifier #导入数据cancer=load_breast_cancer()x=cancer.datay=cancer.target #调参knn的邻近指数nk_range=list(range(1,31))weight_options=['uniform','distance']param_dist=dict(n_neighbors=k_range,weights=weight_options) knn=KNeighborsClassifier()#n_iter为随机生成个数rand=RandomizedSearchCV(knn,param_dist,cv=10,scoring='accuracy', n_iter=10,random_state=5) rand.fit(x,y)rand.grid_scores_print('best score:',rand.best_score_)print('best params:',rand.best_params_)
扫二维码,关注博主主页,学习更多Python知识