御笔剑客 发表于 2019-6-10 19:19:36

【机器学习】二分类knn模型的k值选取有什么特殊讲究吗?


通常先取一个较小的k值,然后再用交叉验证法优选,还有什么需要考虑的吗?

幽梦三影 发表于 2019-6-10 21:30:47

很简单,就是寻找最优超参数,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_)

塔利班 发表于 2019-6-11 07:52:37

什么叫2类别的,,

BngThea 发表于 2019-6-11 08:23:53

一般取值3-5就差不多了,具体要根据数据集的分布情况来定,所以都是设定范围搜索最优解
页: [1]
查看完整版本: 【机器学习】二分类knn模型的k值选取有什么特殊讲究吗?