机器学习进阶文档深度页
K 近邻
保存训练样本,预测时按标准化后的距离寻找 K 个邻居并投票或平均。
学习前需要掌握
欧氏距离内容待补充数值标准化(Z-score)
背景与问题
K 控制偏差方差:太小追随噪声,太大抹平局部结构;高维中距离区分能力下降。
概念定义
KNN 是基于实例的非参数方法,fit 主要保存数据,计算成本集中在 predict。
直观理解
新样本向最相似的已知样本询问答案。
核心原理
距离必须在合理尺度与特征空间中计算。K、距离权重和特征选择通过交叉验证确定。
数学表达
核心表达
距离必须在合理尺度与特征空间中计算。K、距离权重和特征选择通过交叉验证确定。
变量含义
变量定义与本页概念定义一致,代码中的同名变量保持相同语义。
计算步骤
- 1填补与标准化
- 2选择距离
- 3交叉验证 K
- 4拟合保存样本
代码对应位置
示例 1K 近邻 实现:对应文档中的训练与预测逻辑。
计算与实现步骤
- 1
填补与标准化
- 2
选择距离
- 3
交叉验证 K
- 4
拟合保存样本
- 5
预测邻居投票
- 6
检查速度
代码实现
示例 1
K 近邻 实现
K 近邻 实现
scikit-learn
example_01.py用途:对应文档中的训练与预测逻辑。
from sklearn.neighbors import KNeighborsClassifier
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
model=make_pipeline(StandardScaler(),KNeighborsClassifier(n_neighbors=5,weights="distance"))代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
对应文档中的训练与预测逻辑。
model- 组合预处理和估计器的模型对象。
Step 1 · 1–4 行
导入当前步骤需要的数值计算、预处理、模型或评价工具。依赖集中写在代码开头,便于复现。
from sklearn.neighbors import KNeighborsClassifier
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
model=make_pipeline(StandardScaler(),KNeighborsClassifier(n_neighbors=5,weights="distance"))代码与数学原理
减去训练均值并除以训练标准差,对应代码中的 mean/std 或 StandardScaler。
预期输出或运行结果
得到距离加权的 KNN Pipeline。
常见错误 · 4 条
- 不要在测试集上调用 fit 或 fit_transform;测试集只能复用训练参数。
- 未标准化
- K 用测试集选择
- 无关高维特征
实际应用
- 中小数据分类
- 相似检索
常见错误
未标准化
K 用测试集选择
无关高维特征
文档来源
04|近邻、贝叶斯与支持向量机原始文档
学习资料/learning_tech/04_neighbors_bayes_svm.md- §1 K近邻
推荐学习资料
暂未收录相关资料
参考库不会生成虚假资源或无效外部链接。