一、分类算法中的学习概念
因为分类算法都是有监督学习,故分为以下2种学习。
1、急切学习:在给定的训练元组之后、接受到测试元组之前就构造好分类模型。
算法有:贝叶斯、基于规则的分类(决策树)、向后传播分类、SVM(支持向量机)、基于关联规则挖掘的分类。
2、懒惰学习:直到给定一个测试元组才开始构造分类模型。也称为基于实例的学习法。
算法有:KNN。
二、KNN的特点
    
优点:实现方便、支持增量学习、能对超多边形的复杂决策空间建模
缺点:计算量开销大、大规模存储支持。
三、KNN算法原理
非常简单、就是在测试元组中找和训练元组向量空间上最接近的K个点中,类别最多的那个分类。
向量空间距离无非那么几种:欧式、闵科夫斯基、曼哈顿等。
四、KNN算法的细节
1、注意属性在向量空间的规范化、规范化公式和聚类[0,1]规范化公式一样。
2、比较的属性如果是2元变量或者分类变量,设定好差值。(注意最大差区间仍要在规范化空间内部)
3、确实属性值的处理:
① 分类(2元变量)变量直接设置差值为规范化空间的最大值。
② 数值类型属性 若:
Ⅰ:2个元组对应属性均缺失,差值直接为规范化空间最大值。
Ⅱ:如果只有一个缺失,另一个取值为V,则距离差值为|1-V| 和
|0-V| 的最大值 (即Max(|规范化空间的上下界-V|))
4、确定K的值:通过对样本的实验(多次和人工结合),取出误差最小的分类结果。
5、对噪声的处理:在训练的过程中对噪声的元组直接Kill掉。
五、KNN算法的单机实现
1、准备训练数据、对数据预处理和训练:(具体实验和人工干预具体分析)
2、存储训练数据的结果
3、预处理测试数据
4、通过训练数据得到参数K
5、维护一个大小为K的PriorityQueue用于存储最近的KNNNode
6、随机从训练元组中选出K个元素计算好测试元素和这个训练元素的距离并且记录训练元组的组编号放入优先队列(优先堆)中。
7、遍历整个训练元组数据集合,如果测试距离小于优先队列的对头元素的距离。则移除对头、并且压入这个新的KNNNode,然后从新保持优先队列顺序。
8、遍历完成后,计算最大的分组的组号。则测试元组属于这个分组。
六、KNN算法的分布式实现
MAHOUT源码稍后补充。
                    

转载于:https://www.cnblogs.com/lixusign/archive/2012/06/13/2548242.html

【分类器】- KNN相关推荐

  1. python分类器knn、svm_[转载]MatLab分类器大全(svm,knn,随机森林等)

    train_data是训练特征数据, train_label是分类标签. Predict_label是预测的标签. MatLab训练数据, 得到语义标签向量 Scores(概率输出). 1.逻辑回归( ...

  2. python-k近邻分类器-KNN

    K近邻分类器,通过计算待分类数据点,与已有数据集点的所有数据点的距离.取距离最小的前K个点,根据"少数服从多数"的原则,将这个数据点划分为出现次数最多的那个类别. sklean库s ...

  3. 【cs231n作业笔记】一:KNN分类器

    安装anaconda,下载assignment作业代码 作业代码数据集等2018版基于python3.6 下载提取码4put 本课程内容参考: cs231n官方笔记地址 贺完结!CS231n官方笔记授 ...

  4. matlab中的分类器使用小结(SVM、KNN、RF、AdaBoost、Naive Bayes、DAC)

    1.前言 目前了解到的MATLAB分类器有:K近邻,随机森林,朴素贝叶斯,集成学习方法,鉴别分析,支持向量机.现将其主要函数使用方法总结如下,更多细节需参考MATLAB 帮助文件. 设: 训练样本:t ...

  5. 初学者教程:KNN分类器

    作者|Rashida Nasrin Sucky 编译|VK 来源|Towards Data Science KNN分类器是一种非常流行的监督机器学习技术.本文将用一个例子来解释KNN分类器 什么是监督 ...

  6. KNN 分类算法原理代码解析

    作者 | Charmve 来源 | 迈微AI研习社 k-最近邻算法是基于实例的学习方法中最基本的,先介绍基x`于实例学习的相关概念. 基于实例的学习 已知一系列的训练样例,很多学习方法为目标函数建立起 ...

  7. 通过KNN算法,确定球星的风格(很水)

    KNN算法,故名思议,K个最邻近值的分类算法.监督学习中的一种,典型的懒人算法,通过计算所有的预测样本到学习样本的距离,选取其中K个最小值加入样本组中,样本组中的样本隶属于那个分类的个数最多,那么我们 ...

  8. knn实战:如何对手写数字进行识别?

    在 Python 的 sklearn 工具包中有 KNN 算法.KNN 既可以做分类器,也可以做回归. 如果是做分类,你需要引用: from sklearn.neighbors import KNei ...

  9. [机器学习-sklearn] KNN(k近邻法)学习与总结

    KNN 学习与总结 引言 一,KNN 原理 二,KNN算法介绍 三, KNN 算法三要素 1 距离度量 2. K 值的选择 四, KNN特点 KNN算法的优势和劣势 KNN算法优点 KNN算法缺点 五 ...

  10. knn算法java版_KNN算法的实现详解

    #!/usr/bin/env python #-*-coding:utf-8-*- #knn 的具体实现 import csv import random import math import ope ...

最新文章

  1. 配置mysql允许远程连接的方法
  2. mfc中ado上传image到sql数据库
  3. eclipse中更改配置使得switch语句不出错
  4. 成功解决NameError: name 'apply' is not defined
  5. 1.1 Java注解(Annotation)简介
  6. 【转】oracle sequence
  7. boost::container模块实现显式实例集的测试程序
  8. 查看xxx.a库架构的命令
  9. nodejs即时聊天
  10. jsp测试mysql_Jsp登陆与MySQL对接验证
  11. 我写的不只是小说更是程序人生
  12. (13)<datalist> 标签
  13. 华为qq邮箱服务器密码忘了,华为手机qq邮箱无法登录电子邮件鉴权失败的解决办法...
  14. Discuz X3.4模板创建与配置原理简介
  15. 【FPGA】:ip核---乘法器(multiplier)
  16. 金山与永中,谁主沉浮?
  17. 读取groundtruth_rect.txt并转为数组
  18. C语言倒序输出/C语言倒置输出
  19. python面试题(六)——数据库mysql、redis篇
  20. 跳槽谋发展:人生发展的一些思考和最近找工作的坎坷经历

热门文章

  1. zabbix mysql脚本_zabbix监控mysql脚本
  2. ros c++ 代码说明文档_减少运维工作量,如何通过 ROS 轻松实现资源编排新方式...
  3. 对未来计算机的畅想初中英语,初中英语期中考试,作文停电一小时,在北京……在上海……在威海…….doc...
  4. 条件队列java_Java并发系列(4)AbstractQueuedSynchronizer源码分析之条件队列
  5. java字节流转字符流的步骤_字节流-java入门基础笔记-51CTO博客
  6. Mysql5换成Mysql8之后报错java.lang.ClassNotFoundException: com.mysql.jdbc.driver的问题解决
  7. oracle模糊查询很慢,采用全文索引解决模糊查询速度慢的问题
  8. html5svg在线编辑器,SVG to Canvas在线转换工具
  9. 计算机网络项目化实训教程,计算机网络项目实训教程
  10. 计算机科学与应用考研题,2015年中科院计算机科学综合考研真题