算法

k 近邻分类算法(KNN)是一种距离计算聚类算法,,通过计算每个训练数据到待分类元组的距离,取和待分类元组距离最近的 k 个训练数据,k 个数据中哪个类别的训练数据占多数,则待分类元组就属于哪一个类别。

输入

  • 训练数据集 X_train 包含 m 个样本
  • 每个样本的标签 y_train
  • 待分类的数据集 X_test 包含 n 个样本
  • 参数 k 表示最近邻的数量

输出

  • X_test 中每个样本的预测标签

过程:

  • 初始化空列表 predicted_labels
  • 对于 X_test 中的每个样本 x:
    • 初始化空列表 distance
    • 对于 X_train 中的每个样本 x_train
      • 计算距离 d = distance(x, x_train) (常用 Euclidean 距离
      • 将距离 d 添加到 distance
    • 根据 distances 对训练样本索引进行排序,获取前 k 个最小距离的索引 k_indices
    • 根据 k_indices 获取对应的标签 k_nearest_labels
    • 统计 k_nearest_labels 中出现最多的标签,将其作为 x 的预测标签
    • 将预测标签添加到 predicted_labels
  • 返回 predicted_labels