【机器学习】二分类knn模型的k值选取有什么特殊讲究吗?
通常先取一个较小的k值,然后再用交叉验证法优选,还有什么需要考虑的吗? 很简单,就是寻找最优超参数,sklearn代码:
from sklearn.model_selection import GridSearchCV
param = [
# 第一个表示不考虑距离
{
"weights": ["uniform"],
"n_neighbors": ,
},
# 第二个考虑距离,比如欧拉距离、闵可夫斯基距离
{
"weights": ["distance"],
"n_neighbors": ,
"p":
},
]
knn = KNeighborsClassifier()
# n_jobs(启动多核计算), verbose(输出详细信息)
g_s = GridSearchCV(knn, param, n_jobs=-1, verbose=2)
g_s.fit(x_train, y_train)
print(g_s.best_estimator_)
print(g_s.best_score_) 什么叫2类别的,, 一般取值3-5就差不多了,具体要根据数据集的分布情况来定,所以都是设定范围搜索最优解
页:
[1]