一、K 近邻算法 (KNN)
- 是一种非参, 监督学习的分类器 (非参是指KNN不需要假设)
- 可用于解决分类和回归问题
- 根据点与点之间的距离来捕捉相似性
- Euclidean Distance-平方差求和再开方
- Manhattan Distance-坐标差的绝对值求和
- Hamming Distance
二、K 近邻算法实现步骤
KNN算法有三个重要的考虑因素:K值的选择、距离度量方式和分类决策规则
- 初始化 k 的大小, k 为近邻的数量 (k-the number of neighbor)
- 对于在数据集上的每个样本
- 假设我们有一个数据点
- 计算每个样本跟这个数据点的距离 (列表: 索引-距离)
- 按距离从小到大(升序)对该列表进行排序
- 获取前 k个距离最大的索引
- 用该索引获取标签
- 如果回归,则返回 K 个标签的平均值
- 如果是分类,返回 K 个类别标签
import numpy as np
from scipy.stats import mode
# 从零实现 KNN
def predict_datapoint(pt, Xtrain, Ytrain, k)