Grid Search 网格搜索(KNN算法)寻找最合适的超参数-----学习笔记

KNN算法的超参数:

from sklearn.neighbors import KNeighborsClassifier

KNeighborsClassifier 的超参数:

1. n_neighbors : 表示选择距离最近的K个点来投票的数量。

knn_clf = KNeighborsClassifier(n_neighbors=3)

2.weights :表示最近的K个点中,是否考虑距离的权重;

weights = uniform (默认)表示不考虑权重

weighs = distance  表示考虑距离的权重

knn_clf = KNeighborsClassifier(n_neighbors=3 , weights = 'distance')

3. p :表示选择的距离类型;只有当 weights = 'distance' 时,p才有意义;

p = 1 表示选择曼哈顿距离

p = 2 表示选择欧拉距离(默认)

p >=3 表示选择其他距离

knn_clf = KNeighborsClassifier(n_neighbors=3 , weights = 'distance' , p = 1)

4. KNN算法还有其他超参数,暂时不考虑

具体可以参考:http://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsClassifier.html

 

Grid Search 网格搜索

1. 创建KNN实例,设置需要搜寻的超参数格式,用字典的形式表示

字典的键 表示参数的名称 ; 对应的值放在列表中,表示需要搜寻的参数值

Grid Search 网格搜索(KNN算法)寻找最合适的超参数-----学习笔记_第1张图片

2. 用GridSearchCV 来网格搜索

Grid Search 网格搜索(KNN算法)寻找最合适的超参数-----学习笔记_第2张图片

3. fit 结束后

调用 .best_estimator_  ,可以返回最佳的分类器

调用 .best_score_  , 可以返回最佳分类器对应的准确度

调用 .best_params_  ,可以返回最佳分类器对应的参数

Grid Search 网格搜索(KNN算法)寻找最合适的超参数-----学习笔记_第3张图片

4. GridsearchCV 中的准确度(score)采用的是交叉验证(Cross-validation)得来的分数;不是通过 test数据集验证;

 

其他超参数:n_jobs 和 verbose

n_jobs 参数,表示为计算机分配几个核来并行执行搜索 , n_jobs = -1 表示计算机有几个核就分配几个;

verbose 参数,表示在搜索的过程中 输出过程, 参数为整数,越大表示输出的内容月详细

%%time
grid_search = GridSearchCV(knn_clf,param_grid,n_jobs = -1,verbose=4)
grid_search.fit(X_train,y_train)
Fitting 3 folds for each of 60 candidates, totalling 180 fits
[Parallel(n_jobs=-1)]: Done  17 tasks      | elapsed:   10.8s
[Parallel(n_jobs=-1)]: Done  90 tasks      | elapsed:   35.6s
Wall time: 1min 14s
[Parallel(n_jobs=-1)]: Done 180 out of 180 | elapsed:  1.2min finished

你可能感兴趣的:(机器学习算法)