博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
KNN算法python实现小样例
阅读量:5939 次
发布时间:2019-06-19

本文共 1637 字,大约阅读时间需要 5 分钟。

K近邻算法概述

优点:精度高、对异常数据不敏感、无数据输入假定
缺点:计算复杂度高、空间复杂度高
适用数据范围:数值型和标称型
工作原理:
存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,
即我们知道样本集中每一数据与所属分类的对应关系。输入没有标签的新数据后,
将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集
中特征最相似数据(最近邻)的分类标签。一般来说,我们只选择样本数据集中
前K各最相似的数据,这就是k——近邻算法k的出处,通常k是不大于20的整数。最
后,选择k个最相似数据中出现次数最多的分类,作为新数据的分类
K-近邻算法的一般流程
(1)收集数据:可以使用任何方法
(2)准备数据:距离计算所需要的数值,最好是结构化的数据格式
(3)分析数据:可以使用任何方法
(4)训练算法:此步骤不适用于k—近邻算法
(5)测试算法:计算错误率
(6)使用算法:首先需要输入样本数据和结构化的输出结果,然后运行k-近邻算法
判定 输入数据分别属于哪个分类,最后应用对计算出的分类执行后续的处理

1 from numpy import * 2 import operator 3 from os import listdir 4 def createDataSet(): 5     group=array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]]) 6     labels=['A','A','B','B'] 7     return group,labels 8  9 10 def classify0(inX, dataSet, labels, k):11     dataSetSize = dataSet.shape[0]12     #距离计算13     diffMat = tile(inX, (dataSetSize,1)) - dataSet14     sqDiffMat = diffMat**215     sqDistances = sqDiffMat.sum(axis=1)16     distances = sqDistances**0.517     # 按降序排列18     sortedDistIndicies = distances.argsort()19     classCount={}20     #选择距离最小的k个点21     for i in range(k):22         voteIlabel = labels[sortedDistIndicies[i]]23         classCount[voteIlabel] = classCount.get(voteIlabel,0) + 124         #排序25     sortedClassCount = sorted(classCount.items(), key=operator.itemgetter(1), reverse=True)26     return sortedClassCount27 28 group,labels=createDataSet()29 A=classify0([0,0],group,labels,3)30 print(A)

 K-近邻算法是分类数据最简单最有效的算法。K-近邻算法是基于实例的学习,使用算法时我们必须有接近实际数据的训练样本数据。k-近邻算法必须保存全部数据集,如果训练数据集很大,必须使用大量的存储空间。此外,由于必须对数据集中的每个数据计算距离值,实际使用时可能非常耗时。

K-近邻算法的另一个缺陷是它无法给出任何数据的基础结构信息,因此我们也无法知晓平均实例样本和典型实例样本具有什么特征。

转载于:https://www.cnblogs.com/zhibei/p/9350446.html

你可能感兴趣的文章
【转】×××精确校验JS
查看>>
Yii学习笔记:利用setFlash和runController打造个性化的提示信息页面
查看>>
[转]MySQL 5.6 my.cnf配置优化
查看>>
多线程的使用和详解
查看>>
(紀錄)[ASP.NET MVC][jQuery]-1 純手工打造屬於自己的 jQuery GridView
查看>>
巧用DevExpress GridView导入导出Excel
查看>>
Cocos2d-x 学习笔记一 HelloWorld
查看>>
我的友情链接
查看>>
phonegap+jquerymobile开发android的心得(6)
查看>>
TLD文件中body-content四种类型(能力工场)
查看>>
一门杀人于无形的艺术——>社会工程
查看>>
Hyper-V 3.0部署PART 14:准备仲裁磁盘
查看>>
CentOS 7.0系统安装配置图解教程
查看>>
zabbix监控系统的安装与配置
查看>>
Linux下杀毒软件Clamav的安装和使用
查看>>
CentOS6.5上源码安装MongoDB3.2.1
查看>>
centos5.8 安装配置vsftp虚拟用户
查看>>
海量大数据处理最新面试题-1
查看>>
dubbo学习之dubbo管理控制台装配及集成zookeeper集群部署(1)【转】
查看>>
APKTOOL编译出现“entry index is larger than available symbols” <index ,total symbols> 的研究...
查看>>