KNN也称为k近邻算法,本质思想:物以类聚。

在分类或者预测中,待分类或预测的样本的类别和走势将直接参考与该样本最“近邻”的k个邻居。

在这种思路下,KNN注定会遇到3个问题:

(1): 谁是我的邻居:距离度量
(2): 参考多少个邻居作为参考:K值的选择,越多越好吗? 不一定。
(3): 有了k个最近邻居了,如何进行决策:分类决策规则
 
距离度量:闵可夫斯基 || 曼哈顿 || 欧式 || 切比雪夫,具体公式可参考wiki百科
另外:在多维数据中,不同的维度的值差异可能较大,为了平等处理每个特征,需要进行归一化。(每个维度的差值都除该维度最大最小值的差),也可根据情况,加权各个特征。
 
K值的选择:本人目前知识范围内,没有具体的方法来对k进行计算。 通过实验进行选取吧。K=1,2,3,4,8...
 
如何进行决策:在选出了K个邻居后,可以通过多数表决或者加权的方式,来获得最终的结果。
 
总结:
在该方法中,不会有提前从训练数据集中训练出的模型的,但是可以提前训练出K值 + 距离度量方法 + 决策方法。
缺点:在计算邻居时,算法时间复杂度较大,特别是当样本大时,从样本中找出k个与当前样本最近的节点时间复杂度为O(n2),为了解决时间效率为题,有2种解决思路:
  • 使用新的数据结构:KD树(程序员喜欢、适合大数据潮流)
  • 对数据进行清洗,去掉一些不必要的样本(大数据思想,好像不太喜欢这个方案)
 
对与KNN,先写到这。 关于KD树,可以参考一下链接:
 
 
 
 
 

数据挖掘经典算法之KNN的更多相关文章

  1. 机器学习经典算法之KNN

    一.前言 KNN 的英文叫 K-Nearest Neighbor,应该算是数据挖掘算法中最简单的一种. 先用一个例子体会下. /*请尊重作者劳动成果,转载请标明原文链接:*/ /* https://w ...

  2. 【数据挖掘基础算法】KNN最近邻分类算法

    算法简介: 通过计算待预测样本和已知分类号的训练样本之间的距离来判断该样本属于某个已知分类号的概率.并选取概率最大的分类号来作为待预测样本的分类号 懒惰分类算法,其模型的建立直到待预测实例进行预测时才 ...

  3. 数据挖掘经典算法PrefixSpan的一个简单Python实现

    前言 用python实现了一个没有库依赖的"纯" py-based PrefixSpan算法. Github 仓库 https://github.com/Holy-Shine/Pr ...

  4. 数据挖掘经典算法——K-means算法

    算法描述 K-means算法是一种被广泛使用的基于划分的聚类算法,目的是将n个对象会分成k个簇.算法的具体描述如下: 随机选取k个对象作为簇中心: Do 计算所有对象到这k个簇中心的距离,将距离最近的 ...

  5. 【十大经典数据挖掘算法】kNN

    [十大经典数据挖掘算法]系列 C4.5 K-Means SVM Apriori EM PageRank AdaBoost kNN Naïve Bayes CART 1. 引言 顶级数据挖掘会议ICDM ...

  6. ICDM评选:数据挖掘十大经典算法

    原文地址:http://blog.csdn.net/aladdina/article/details/4141177 国际权威的学术组织the IEEE International Conferenc ...

  7. 数据挖掘领域十大经典算法之—C4.5算法(超详细附代码)

    https://blog.csdn.net/fuqiuai/article/details/79456971 相关文章: 数据挖掘领域十大经典算法之—K-Means算法(超详细附代码)        ...

  8. Python3实现机器学习经典算法(一)KNN

    一.KNN概述 K-(最)近邻算法KNN(k-Nearest Neighbor)是数据挖掘分类技术中最简单的方法之一.它具有精度高.对异常值不敏感的优点,适合用来处理离散的数值型数据,但是它具有 非常 ...

  9. 数据挖掘十大经典算法(5) 最大期望(EM)算法

    在统计计算中,最大期望(EM,Expectation–Maximization)算法是在概率(probabilistic)模型中寻找参数最大似然估计的算法,其中概率模型依赖于无法观测的隐藏变量(Lat ...

随机推荐

  1. HTTP缓存 1.0 vs 1.1

    在“使用ETag跟踪用户”中有一点被忽略了,因为要用这张小图统计统计uv, 所以要求浏览器必须每次都要发送这个图片的请求.这需要服务器对图片的缓存策略做设置. http/1.0 和 http/1.1 ...

  2. Android应用开发学习之AlertDialog对话框

    作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 本文中我们通过一个例子来看AlertDialog对话框的实现,其运行效果如下: 主布局文件main.xml内容如下: ...

  3. 删除list中指定值的元素

    public class ListRemoveAll { public static void main(String[] args) {  // TODO Auto-generated method ...

  4. handsontable的核心方法

    1.为handsontable添加钩子方法 addHook(key,callback):key为钩子方法名 <span style="font-size:18px;"> ...

  5. UITextView 输入长度限制

    //还可以输入的长度. - (void)textViewDidChange:(UITextView *)textView { UITextRange *markRange = textView.mar ...

  6. 设置Eclipse启动JDK

    打开eclipse安装目录下的eclipse.ini文件,将红色内容加入 -vm ../Java/jdk1.6.0_26/bin (或者指向具体目录:D:/software/jdk_1.8u91/bi ...

  7. python学习之路-8 面向对象之进阶

    上篇内容回顾和补充 面向对象三大特性 封装 继承 多态 在python中没有多态的概念 变量的类型允许为多种数据类型称之为多态 # c#/java中的多态 # 伪代码 def func(int arg ...

  8. Linux基本操作 2-----Linux文件系统基本结构

    Linux的文件系统结构             Linux文件系统为一个倒转的单根树状结构 文件系统的根为"/" 文件系统严格区分大小写 路径使用“/”来分割,在windows使 ...

  9. ZOJ 3329 One Person Game 带环的概率DP

    每次都和e[0]有关系 通过方程消去环 dp[i] = sigma(dp[i+k]*p)+dp[0]*p+1 dp[i] = a[i]*dp[0]+b[i] dp[i] = sigma(p*(a[i+ ...

  10. WPF窗体属性

    以后慢慢加吧! ResizeMode="NoResize" 禁止缩放大小 WindowStyle="ToolWindow" 隐藏最大化与最小化按钮WindowS ...