K-最近邻算法(KNN)

K-最近邻算法(KNN)

KNN算法是监督学习中分类方法的一种,主要思想是如果一个样本在特征空间中的k个最近的样本中的大多数都属于某个类别,则该样本属于这个类别,并具有这个类别上的特性。

补充: 所谓监督学习与非监督学习,是指训练数据是否有标柱类别,若有则为监督学习,若否则为非监督学习。 监督学习是指根据训练数据学习一个模型,然后能对后来的输入做预测。在监督学习中,输入变量和输出变量可以是连续的,也可以是离散的。若输入变量和输出变量均为连续变量,则称为回归;输出变量为有限个离散变量,则称为分类。

KNN算法流程:

  1. 准备数据:对数据进行预处理,选用合适的数据结构存储训练数据和测试数据。
  2. 先给k一个值
  3. 遍历训练集,计算当前测试样本与训练集中样本的距离或相似度,
  4. 根据k个距离最小或相似度最大的k个训练样本的类别确定测试样本的类别。
  5. 测试集测试完毕后计算错误率,继续设定不同的k值返回到第3步,最后取错误率最小的k值。
  6. 使用算法:首先需要输入样本数据和结构化的输出结果,然后运行KNN判定输入数据分别属于哪个分类,最后对计算出的分类执行后续处理。

距离度量公式有:欧几里得距离,明可夫斯基距离,曼哈顿距离,切比雪夫距离,马氏距离等,相似度的度量公式有:余弦相似度,皮尔森相关系数,Jaccard相似系数。
补充:欧几里得距离度量会受特征不同单位刻度的影响,所以一般需要先进行标准化处理。

类别的判断方法:

  1. 投票决定:少数服从多数,近邻中哪个类别的点最多就分为该类。
  2. 加权投票法:根据距离的远近,对近邻的投票进行加权,距离越近则权重越大。
    knn还可用于回归,目标样本的属性值是k个邻居属性值的平均值。

下面是使用KNN改进约会网站的配对效果的python实现代码:

from numpy import *
imort operator
#准备数据
def file2matrix(filename):
    fr = open(filename)
    numberOfLines = len(fr.readlines())         #get the number of lines in the file
    returnMat = zeros((numberOfLines,3)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值