KNN与Kmeans感觉没啥联系,但是名字挺像的,就拿来一起总结一下吧。

初学者的总结。

KNN是监督学习,Kmeans是无监督学习。

KNN用于分类,Kmeans用于聚类。

先说KNN:

对于KNN,有一批已经标注好label的训练样本,将这批样本的数据转换为向量表示,然后选择度量向量距离的方式。例如 欧式距离,曼哈顿距离,夹脚余弦等。对于这批样本记为W。

然后来一个待分类的样本S,选取W中距离样本S距离最近的K个样本。这K个样本中哪种类别的样本多,则该样本S的分类就是哪种。

KNN的优缺点:

KNN的优点:

1、对输入数据无假定,比如不会假设输入数据是服从正太分布的。

2、算法简单,直观,易于实现

3、对异常值不敏感

4、可以用于数值型数据,也可以用于离散型数据

KNN的缺点:

1、有说是计算复杂度高,不过这个是可以改进的,例如KD数,或者ball tree

2、严重依赖训练样本集,这个感觉没啥改进方法,只能是尽量获取更好的训练样本集。

3、距离度量方法,K值的选取都有比较大的影响。 KNN算法必须指定K值,K值选择不当则分类精度不能保证

4、特征作用相同 与决策树归纳方法和神经网络方法相比,传统最近邻分类器认为每个属性的 作用都是相同的(赋予相同权重)。样本的距离是根据样本的所有特征(属性)计 算的。在这些特征中,有些特征与分类是强相关的,有些特征与分类是弱相关的, 还有一些特征(可能是大部分)与分类不相关。这样,如果在计算相似度的时候, 按所有特征作用相同来计算样本相似度就会误导分类过程。

KNN的改进方向:

对于KNN分类算法的改进方法主要可以分为加快分类速度、对训练样本库的 维护、相似度的距离公式优化和K值确定四种类型。
目前我了解的只有加快分类速度,通过KD树,ball tree等。
机器学习实战 书中说 K不超过20
 

KNN 算法,以及与Kmeans的简单对比的更多相关文章

  1. 深入浅出KNN算法(二) sklearn KNN实践

    姊妹篇: 深入浅出KNN算法(一) 原理介绍 上次介绍了KNN的基本原理,以及KNN的几个窍门,这次就来用sklearn实践一下KNN算法. 一.Skelarn KNN参数概述 要使用sklearnK ...

  2. 数据挖掘之KNN算法(C#实现)

    在十大经典数据挖掘算法中,KNN算法算得上是最为简单的一种.该算法是一种惰性学习法(lazy learner),与决策树.朴素贝叶斯这些急切学习法(eager learner)有所区别.惰性学习法仅仅 ...

  3. 机器学习-KNN算法

    原理 KNN算法,又叫K近邻算法.就是在训练集中数据和标签已知的情况下,输入测试数据,将测试数据的特征与训练集中对应的特征进行相互比较,找到训练集中与之最为相似的前K个数据,则该测试数据对应的类别就是 ...

  4. KNN算法原理及实现

    1.KNN算法概述 kNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性.该方法在确定分类决策上只依据最邻近的一 ...

  5. KNN 算法-理论篇-如何给电影进行分类

    公号:码农充电站pro 主页:https://codeshellme.github.io KNN 算法的全称是K-Nearest Neighbor,中文为K 近邻算法,它是基于距离的一种算法,简单有效 ...

  6. Kmeans算法与KNN算法的区别

    最近研究数据挖掘的相关知识,总是搞混一些算法之间的关联,俗话说好记性不如烂笔头,还是记下了以备不时之需. 首先明确一点KNN与Kmeans的算法的区别: 1.KNN算法是分类算法,分类算法肯定是需要有 ...

  7. k-Means和KNN算法简述

    k-means 算法 k-means 算法接受输入量 k :然后将n个数据对象划分为 k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高:而不同聚类中的对象相似度较小.聚类相似度是利用各聚类 ...

  8. KNN算法简单应用

    这里是写给小白看的,大牛路过勿喷. 1 KNN算法简介 KNN(K-Nearest Neighbor)工作原理:存在一个样本数据集合,也称为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集 ...

  9. kNN算法python实现和简单数字识别

    kNN算法 算法优缺点: 优点:精度高.对异常值不敏感.无输入数据假定 缺点:时间复杂度和空间复杂度都很高 适用数据范围:数值型和标称型 算法的思路: KNN算法(全称K最近邻算法),算法的思想很简单 ...

随机推荐

  1. 使用ODBC 数据库 ,运行程序时 出现 “遇到不适当的参数”

    我知道的一种情况是 数据库打开了,没有关闭,再次调用数据库打开函数,会出现这样错误.当然是打开同一个数据库同一张表.

  2. TCP原理

    1.http://coolshell.cn/articles/11564.html 2.http://coolshell.cn/articles/11609.html 3.一站式学习wireshark ...

  3. CNI Proposal 摘要

    原文连接:https://github.com/containernetworking/cni/blob/master/SPEC.md General consideration CNI的想法是先让容 ...

  4. Python 模块之 xlrd (Excel文件读写)

    # 1. 导入模块 import xlrd # 2.打开Excel文件读取数据 data = xlrd.open_workbook('excelFile.xls') # 3. 使用技巧 # 3.1 获 ...

  5. Kettle-1-安装配置

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/wl101yjx/article/details/32921691 写在前面一: 数据仓库ETL工具有 ...

  6. Oracle 11g数据库详解(2)

    FAILED_LOGIN_ATTEMPTS 用于指定连续登陆失败的最大次数 达到最大次数后,用户会被锁定,登陆时提示ORA-28000 UNLIMITED为不限制 精确无误差 是 实时 PASSWOR ...

  7. Linux指令od和hexdump

    Linux指令:od (octal dump) 示例用法:od -c hello Linux指令:od od命令用户通常使用od命令查看特殊格式的文件内容.通过指定该命令的不同选项可以以十进制.八进制 ...

  8. js 数组判断是否包含某元素 或 数组去重

    判断包含: 1.借助 jquery  $.inArray(obj.UNIVERSITY_NAME, arryDatas) < 0var arr = [ "xml", &quo ...

  9. GIT学习笔记(3):分支管理

    GIT学习笔记(3):分支管理 何谓分支 GIT是如何存储数据的 GIT不是存储文件差异或者变化量,而是一系列文件的快照.在Git提交时,会保存一个提交(commit)对象,该对象包含一个指向暂存内容 ...

  10. maven入门学习(一)

    一.maven介绍 1.软件开发中我们为什么要使用maven呢?(纯属个人体会观点,如有错误,敬请指正) (1)其一,企业岗位需求,目前的IT开发招聘岗位上,基本都要求会使用maven.        ...