knn-伪代码与实现过程
knn特点
优点:精度高,对异常值不明感,无数据输入嘉定
缺点:计算复杂度高,空间复杂度高
适用范围:数值型和标称型
knn算法的伪代码
1、计算已知类别数据集中的点与当前之间的距离
2、按照距离递增次序排序
3、选取与当前点距离最6,小的k个点
4、确定前k个点所在的类别的出现频率
5、返回前k个点出现频率最高的类别作为当前点的预测分类
示例:knn最近邻算法改进约会网站的匹配记录
1、收集数据:提供文本文件
*做数据归一化
2、准备数据:python解析数据:包括数据录入与调用knn算法
3、分析数据:使用matplotlib画二位散点图
4、训练算法:此步骤不适用k-nn算法
5、测试算法:使用海伦通的部分数据作为测试样本;测试样本和非测试样本的区别在于:测试样本是已经完成分类的数据,如果预测分类与实际类别不同,则标记错误。
*归一化处理特征(改造分类可以使用的特征值)
*计算测试向量的数量(决定了那些数据用测试,哪些用于训练样本),然后输入到原始的knn分类器函数classfy0中,最后计算错误率,并输出
6、使用算法:产生raw_input,输入一些所获得的某个特殊值,产生二位散点图,并用颜色标记方法进行处理
7、注意:涉及到数值归一化问题,knn的缺点是无法给出任何数据的基础结构信息,新词我们无法知晓平均示例样本和典型实例样本具有什么特征,但概率测量方法可以处理分类问题。
手写系统示例:
1、收集数据:提取文件
2、准备数据:编写函数classfy0(),将图片转换为分类器使用的list格式
*将二进制图形举证转化为1*1024的向量
*打开文件,循环文件前32行,并将每行的头32个字符值存放在Numpy中
3、分析数据:在python命令提示符中检查数据,确保符合要求
*获取目录内容
*从文件名解析数字分类,主要是匹配训练集的向量相似性
4、训练数据:knn不适合
5、测试数据:编写函数使用提供的部分数据及作为测试样本,测试样本和费测试样本的区别在于测试样本是已经完成的分为类数据,如果预测分类和实际类别不同,则标记为一个错误
6、使用算法:
knn-伪代码与实现过程的更多相关文章
- 一看就懂的K近邻算法(KNN),K-D树,并实现手写数字识别!
1. 什么是KNN 1.1 KNN的通俗解释 何谓K近邻算法,即K-Nearest Neighbor algorithm,简称KNN算法,单从名字来猜想,可以简单粗暴的认为是:K个最近的邻居,当K=1 ...
- 室内定位系列(三)——位置指纹法的实现(KNN)
位置指纹法中最常用的算法是k最近邻(kNN):选取与当前RSS最邻近的k个指纹的位置估计当前位置,简单直观有效.本文介绍kNN用于定位的基本原理与具体实现(matlab.python). 基本原理 位 ...
- KNN算法--物以类聚,人以群分
KNN(K Nearest Neighbors,K近邻 )算法是机器学习所有算法中理论最简单,最好理解的.KNN是一种基于实例的学习,通过计算新数据与训练数据特征值之间的距离,然后选取K(K>= ...
- TensorFlow实现knn(k近邻)算法
首先先介绍一下knn的基本原理: KNN是通过计算不同特征值之间的距离进行分类. 整体的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于 ...
- 一句话总结kNN算法
一句话总结kNN算法 核心:模板匹配,将样本分到离它最相似的样本所属的类. kNN算法本质上使用了模板匹配的思想.要确定一个样本的类别,可以计算它与所有训练样本的距离,然后找出和该样本最接近的k个样本 ...
- 机器学习实战1-1 KNN电影分类遇到的问题
为什么电脑排版效果和手机排版效果不一样~ 目前只学习了python的基础语法,有些东西理解的不透彻,希望能一边看<机器学习实战>,一边加深对python的理解,所以写的内容很浅显,也许还会 ...
- 机器学习简要笔记(三)-KNN算法
#coding:utf-8 import numpy as np import operator def classify(intX,dataSet,labels,k): ''' KNN算法 ''' ...
- 【机器学习】kNN
机器学习算法--kNN 目录 机器学习算法--kNN 1. 算法原理 2. 算法实现 2.1 kd-tree构造 2.2 kd-tree查询 2.3 kNN算法实现 3. 算法测试 Ref 1. 算法 ...
- 机器学习-K近邻(KNN)算法详解
一.KNN算法描述 KNN(K Near Neighbor):找到k个最近的邻居,即每个样本都可以用它最接近的这k个邻居中所占数量最多的类别来代表.KNN算法属于有监督学习方式的分类算法,所谓K近 ...
- [Python学习] python 科学计算库NumPy—tile函数
在学习knn分类算法的过程中用到了tile函数,有诸多的不理解,记录下来此函数的用法. 函数原型:numpy.tile(A,reps) #简单理解是此函数将A进行重复输出 其中A和reps都是ar ...
随机推荐
- Execl数据导入sql server方法
在日常的程序开发过程中,很多情况下,用户单位给予开发人员的数据往往是execl或者是access数据,如何把这些数据转为企业级是数据库数据呢,下面就利用sqlserver自带的功能来完成此项任务. 首 ...
- angularJS(4)
angularJS(4) 一:angulaJs的作用域scope Scope(作用域) 是应用在 HTML (视图) 和 JavaScript (控制器)之间的纽带.scope 是一个 JavaScr ...
- 初识redis数据类型
初识redis数据类型 1.String(字符串) string是redis最基本的类型,一个key对应一个value. string类型是二进制安全的.意思是redis的string可以包含任何数据 ...
- 【MySQL】mysql workbench
1.导入,导出,数据之间的传输[两台服务器]2.连接管理3.服务器管理4.表的管理
- C# readonly 与const
引自:http://www.cnblogs.com/ryuasuka/p/3342282.html?utm_source=tuicool&utm_medium=referral 现在正在学&l ...
- SpringMVC注解汇总(一)-定义
本文根据开涛哥学习SpringMVC汇总而成,方便更好查阅! 网址:http://jinnianshilongnian.iteye.com/blog/1752171 注解式控制器简介 @Control ...
- css中,设置百分比后,让百分比的宽度包括padding和border来计算
*{ -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;}
- 思维导图FreeMind安装问题及简单使用
思维导图软件使用的坎坷之路 一直想将思维导图加入到工作环境当中 最开始使用的是 MindManager(http://www.mindmanager.cc/) ,而且感觉利用它制作出来的导图外观也比较 ...
- Javascript最简单的模板引擎
非常简单,性能估计一般,方法最原始. //第一代模板引擎 //只支持{{key}}的替换,不支持语句 //支持Object和Array对象 function template_setdata(temp ...
- bzoj1415[NOI2005]聪聪和可可
之前做的一些图上的期望步数的题大多用到高斯消元来求解(HNOI游走,SDOI走迷宫,etc),因此我一开始做这道题的时候想偏了- 这道题的性质:聪聪和可可之间的最短路长度严格递减.因为聪聪总可以多走一 ...