数据挖掘之KNN算法

KNN算法是一种基于距离测量的分类方法,通过找到训练样本中最相似的数据(最近邻)来决定新数据的分类。尽管精度高、对异常值不敏感,但其计算和空间复杂度较高。算法流程包括收集、准备、分析数据,然后测试和应用。两点间的欧氏距离是计算相似度的关键。
摘要由CSDN通过智能技术生成

KNN(k-近邻)算法概述:
简单地说,k-近邻算法采用测量不同特征值之间的距离方法进行分类。

它的工作原理是:存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。输人没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征
最相似数据(最近邻)的分类标签。一般来说,我们只选择样本数据集中前&个最相似的数据,这就是&-近邻算法中&的出处,通常*是不大于20的整数。最后,选择&个最相似数据中出现次数最多的分类,作为新数据的分类。

优点:精度高、对异常值不敏感、无数据输入假定。
缺点:计算复杂度高、空间复杂度高。
适用数据范围:数值型和标称型。

k-近邻算法的一般流程:
(1)收集数据:可以使用任何方法。
(2)准备数据:距离计算所需要的数值,最好是结构化的数据格式。
(3)分析数据:可以使用任何方法。
(4)训练算法:此步驟不适用于1 近邻算法。
(5)测试算法:计算错误率。
(6)使用算法:首先需要输入样本数据和结构化的输出结果,然后运行k-近邻算法判定输入数据分别属于哪个分类,最后应用对计算出的分类执行后续的处理。

两点间距离公式:
设两个点A、B以及坐标分别为A(x1,y1)、B(x2,y2),则A和B两点之间的距离为:
((x1-x2)**2+(y1-y2)**2)**0.5
 

 

# -*- coding: utf-8 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
K-Nearest Neighbors (KNN) 算法是一种基于实例的学习方法,在数据挖掘中用于分类和回归分析。它的基本思想是:给定一个新样本,找到训练集中与其最相似的K个邻居(通常选择最近的),然后根据这些邻居的标签(对于分类)或属性值(对于回归)来决定新样本的预测结果。 KNN 算法的核心步骤包括: 1. 计算距离:通常是用欧氏距离或者其他相似度度量来计算样本间的距离。 2. 确定K值:选择一个合适的K值,通常是一个较小的整数。 3. 找到K个最近邻居:根据距离排序,选取前K个。 4. 预测:对于分类任务,多数投票决定;对于回归任务,取K个邻居的平均值。 然而,KNN 算法的一些缺点包括: - 计算复杂度高:对于大规模数据集,尤其是距离计算可能很耗时。 - 需要存储所有训练样本:内存需求大。 - 对于特征缩放敏感:不同的特征尺度会影响距离计算的结果。 针对这些局限,有一些改进算法: 1. **kd树**:使用空间划分技术来加速搜索过程,减少计算时间。 2. **Ball Tree**:类似kd树,但采用球形划分,适用于非均匀分布的数据。 3. **局部加权线性回归** (Local Weighted Linear Regression, LWR):只考虑邻域内的数据,对全局信息依赖较少。 4. **kd树+kd树** 或 **kd树+Ball Tree** 结合:利用两者的优点,同时提高效率和准确性。 5. **KNN 包围盒方法**:对每个训练样本建立一个包围盒,新样本只与包围盒内的点比较。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值