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实例,设置需要搜寻的超参数格式,用字典的形式表示
*字典的键 表示参数的名称 ; 对应的值放在列表中,表示需要搜寻的参数值*

2. 用GridSearchCV 来网格搜索

3. fit 结束后
调用 .best_estimator_ ,可以返回最佳的分类器
调用 .best_score_ , 可以返回最佳分类器对应的准确度
调用 .best_params_ ,可以返回最佳分类器对应的参数

4. GridsearchCV 中的准确度(score)采用的是交叉验证(Cross-validation)得来的分数;不是通过 test数据集验证;
其他超参数:N_JOBS 和 VERBOSE
n_jobs 参数,表示为计算机分配几个核来并行执行搜索 , n_jobs = -1 表示计算机有几个核就分配几个;
verbose 参数,表示在搜索的过程中 输出过程, 参数为整数,越大表示输出的内容月详细
1 | %%time |

