机器学习笔记

机器学习笔记之KNN算法实现

  • 算法原理
  • 算法特点
  • 算法实现

原理讲解

kNN又称为k-近邻算法。是一种简单高效的分类算法。

主要原理

存在一个样本数据集合,也称作训练样本集。并且样本集中每个数据都存在标签,即我么知道样本集中每个数据的真实分类。该算法的一个典型特点就是不用生成一个分类模型。一个输入的训练数据即是一个模型。
之后,输入测试数据。对于每个测试数据来说,他的分类结果是不明确的。需要通过算法来判别。这里KNN采用的方法是通过计算输入元组和训练数据中的所有元组的距离(对于数值型属性可以采用欧式距离,编码型可以参考采用汉明距离),然后取距离最小的k个元组(一般来说k是人工输入的一个值,一般来说k取小于20的值比较合适)。判断这k个元组中占比最多的那个类别,然后将这个类别标签作为输入元组类别的一个预测值。

算法特点

优点:精度高, 对于异常值不敏感,无数据输入假定
缺点:计算复杂度高,这是由于算法本身特点决定的,每做一次判断都需要遍历计算遍训练集时间复杂度 O(n2) O ( n 2 ) 。空间复杂度也相对比较高
适用数据范围:数值型和标称型

算法实现

实现过程这里主要是用python进行实现的,进行测试的时候采用的是42000条记录的测试集和42000条记录的训练集合。整个运行过程相对比较长。具体实现过程参考GitHub:https://github.com/PL97/KNN
如有任何错误欢迎指正

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值