GRID SEARCH 网格搜索(KNN算法)寻找最合适的超参数

KNN算法的超参数:

1
from sklearn.neighbors import KNeighborsClassifier

KNeighborsClassifier 的超参数:

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

1
knn_clf = KNeighborsClassifier(n_neighbors=3)

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

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

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

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

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

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

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

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

1
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实例,设置需要搜寻的超参数格式,用字典的形式表示

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

img

2. 用GridSearchCV 来网格搜索

img

3. fit 结束后

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

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

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

img

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

其他超参数:N_JOBS 和 VERBOSE

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

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

1
2
3
4
5
6
7
8
9
10
11
%%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

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. GRID SEARCH 网格搜索(KNN算法)寻找最合适的超参数
  2. 2. KNN算法的超参数:
  3. 3. GRID SEARCH 网格搜索
  4. 4. 其他超参数:N_JOBS 和 VERBOSE
,