第四十六篇 入门机器学习——kNN

No.1. k-近邻算法的特点

No.2. 准备工作,导入类库,准备测试数据

No.3. 构建训练集

No.4. 简单查看一下训练数据集大概是什么样子,借助散点图

No.5. kNN算法的目的是,假如有新的数据加入,需要判断这个新的数据属于数据集中的哪一类
我们添加一个新的数据,重新绘制散点图

No.6. kNN的实现过程——计算x到训练数据集中每个点的距离

No.7. kNN的实现过程——使用argsort来获取距离x由近到远的点的索引组成的向量,进行保存

No.8. kNN的实现过程——指定需要考虑的最近的点的个数k,并获取距离x最近的k个点的y_train中的数据

No.9. kNN的实现过程——统计出属于不同类别的点的个数,并选择票数最多的类别

No.10. kNN的实现过程——对预测结果进行保存,结束。

No.11. 我们可以将kNN算法封装到一个函数中

No.12. 然后我们处理好测试数据,直接调用这个封装好的函数,就能得到预测结果

 No.13. 机器学习的一般流程

No.14. k-近邻算法的特殊性

No.15. 使用scikit-learn中的kNN算法

No.16. 模仿scikit-learn封装自己的KNNClassifier类

No.17. 调用自己封装的KNNClassifier类

No.18. k近邻算法的缺点
  • 缺点1:效率低下,这也是kNN算法的最大缺点,如果训练数据集有m个样本,n个特征,则预测一个新数据的时间复杂度为O(m*n)
  • 缺点2:高度数据相关,容易导致预测出错
  • 缺点3:预测结果不具有可解释性
  • 缺点4:维数灾难,随着维数的增加,原本看似很近的两个点的距离会越来越大
原文地址:https://www.cnblogs.com/xuezou/p/9317199.html