📜  K最近邻居(1)

📅  最后修改于: 2023-12-03 15:17:11.238000             🧑  作者: Mango

K最近邻居(K-Nearest Neighbors)

简介

K最近邻居(K-Nearest Neighbors,简称KNN)是一种常用的机器学习算法,它被广泛使用于分类和回归问题中。

在分类问题中,KNN的作用是根据已知的样本数据,对新输入的样本进行分类。算法的基本思想是:给定一个新的样本,KNN算法会在已有的样本数据中,找到与该样本最相似的K个样本,然后将新样本分类为这K个样本中出现最多的类别。

在回归问题中,KNN的作用是预测连续性变量。算法的基本思想是:给定一个新的样本,KNN算法会在已有的样本数据中,找到与该样本最相似的K个样本,然后将新样本预测为这K个样本的平均值。

示例代码
from sklearn.neighbors import KNeighborsClassifier

# KNN分类
X = [[0], [1], [2], [3]]
y = [0, 0, 1, 1]
neigh = KNeighborsClassifier(n_neighbors=3)
neigh.fit(X, y)
print(neigh.predict([[1.1]]))    # 输出:[0]

# KNN回归
from sklearn.neighbors import KNeighborsRegressor
X = [[0], [1], [2], [3]]
y = [0, 0, 1, 1]
neigh = KNeighborsRegressor(n_neighbors=3)
neigh.fit(X, y)
print(neigh.predict([[1.5]]))    # 输出:[0.66666667]
基本参数

在使用KNN算法时,一般需要设置以下参数:

  • n_neighbors:用于设置KNN算法中的K值,即选取多少个最相似的样本来进行分类或回归。
  • algorithm:用于设置最近邻搜索算法。默认值为"auto",表示自动选择搜索算法,也可以将该参数设置为"ball_tree"、"kd_tree"或"brute",来使用不同的最近邻搜索算法。
应用场景

KNN算法广泛应用于各种分类和回归任务中,常用于如下领域:

  • 垃圾邮件分类
  • 智能推荐系统
  • 社交网络分析
  • 医学疾病预测
  • 金融风险评估
优缺点

KNN算法的优点包括:

  • 算法思想简单,易于理解和实现
  • 适用于多种问题,比如分类、回归、密度估计等
  • 可以直观地解释算法结果

KNN算法的缺点包括:

  • 时间复杂度高,无法处理大型数据集
  • 对数据的质量要求较高,噪声和异常值会影响算法的分类和回归结果
  • 需要指定K值,不同的K值会对结果产生一定影响,具有较强主观性