邻近算法

或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。

关于K最近邻算法,非常好的一篇文章:KNN算法理解;   另外一篇文章也值得参考:KNN最近邻Python实现

行业应用:  客户流失预测、欺诈侦测等(更适合于稀有事件的分类问题)

写在前面的:Python2.7

数据iris: http://pan.baidu.com/s/1bHuQ0A   测试数据集: iris的第1行数据; 训练数据: iris的2到150行数据

 #coding:utf-8
import pandas as pd
import numpy as np class KNNa(object): #获取训练数据集
def getTrainData(self):
dataSet = pd.read_csv('C:\pythonwork\practice_data\iris.csv', header=None)
dataSetNP = np.array(dataSet[1:150])
trainData = dataSetNP[:,0:dataSetNP.shape[1]-1] #获得训练数据
labels = dataSetNP[:,dataSetNP.shape[1]-1] #获得训练数据类别
return trainData,labels
#得到测试数据的类别
def classify(self, testData, trainData, labels, k):
#计算测试数据与训练数据之间的欧式距离
dist = []
for i in range(len(trainData)):
td = trainData[i,:] #训练数据
dist.append(np.linalg.norm(testData - td)) #欧式距离
dist_collection = np.array(dist) #获得所有的欧氏距离,并转换为array类型
dist_index = dist_collection.argsort()[0:k] #按升序排列,获得前k个下标
k_labels = labels[dist_index] #获得对应下标的类别 #计算k个数据中,类别的数目
k_labels = list(k_labels) #转换为list类型
labels_count = {}
for i in k_labels:
labels_count[i] = k_labels.count(i) #计算每个类别出现的次数
testData_label = max(labels_count, key=labels_count.get) #次数出现最多的类别
return testData_label if __name__ == '__main__':
kn = KNNa()
trainData,labels = kn.getTrainData() #获得训练数据集,iris从第2行到第150行的149条数据
testData = np.array([5.1, 3.5, 1.4, 0.2]) #取iris中的数据的第1行
k = 10 #最近邻数据数目
testData_label = kn.classify(testData,trainData,labels,k) #获得测试数据的分类类别
print '测试数据的类别:',testData_label

理论:

KNN算法--python实现的更多相关文章

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

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

  2. KNN算法python实现

    1 KNN 算法 knn,k-NearestNeighbor,即寻找与点最近的k个点. 2 KNN numpy实现 效果: k=1 k=2 3 numpy 广播,聚合操作. 这里求距离函数,求某点和集 ...

  3. KNN算法——python实现

    二.Python实现 对于机器学习而已,Python需要额外安装三件宝,分别是Numpy,scipy和Matplotlib.前两者用于数值计算,后者用于画图.安装很简单,直接到各自的官网下载回来安装即 ...

  4. KNN算法python实现小样例

    K近邻算法概述优点:精度高.对异常数据不敏感.无数据输入假定缺点:计算复杂度高.空间复杂度高适用数据范围:数值型和标称型工作原理:存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签 ...

  5. 机器学习——KNN算法(k近邻算法)

    一 KNN算法 1. KNN算法简介 KNN(K-Nearest Neighbor)工作原理:存在一个样本数据集合,也称为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分 ...

  6. 机器学习之KNN算法

    1 KNN算法 1.1 KNN算法简介 KNN(K-Nearest Neighbor)工作原理:存在一个样本数据集合,也称为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属 ...

  7. [Python] 应用kNN算法预测豆瓣电影用户的性别

    应用kNN算法预测豆瓣电影用户的性别 摘要 本文认为不同性别的人偏好的电影类型会有所不同,因此进行了此实验.利用较为活跃的274位豆瓣用户最近观看的100部电影,对其类型进行统计,以得到的37种电影类 ...

  8. k-近邻(KNN)算法改进约会网站的配对效果[Python]

    使用Python实现k-近邻算法的一般流程为: 1.收集数据:提供文本文件 2.准备数据:使用Python解析文本文件,预处理 3.分析数据:可视化处理 4.训练算法:此步骤不适用与k——近邻算法 5 ...

  9. kNN算法基本原理与Python代码实践

    kNN是一种常见的监督学习方法.工作机制简单:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k各训练样本,然后基于这k个“邻居”的信息来进行预测,通常,在分类任务中可使用“投票法”,即选择这k ...

随机推荐

  1. 深入理解 JavaScript 事件循环(二)— task and microtask

    引言 microtask 这一名词是 JS 中比较新的概念,几乎所有人都是在学习 ES6 的 Promise 时才接触这一新概念,我也不例外.当我刚开始学习 Promise 的时候,对其中回调函数的执 ...

  2. 实现一个javascript手势库 -- base-gesture.js

    现在移动端这么普及呢,我们在手机上可以操作更多了.对于网页来说实现一些丰富的操作感觉也是非常有必要的,对吧(如果你仅仅需要click,,那就当我没说咯...)~~比如实现上下,左右滑动,点击之类的,加 ...

  3. 2.如何实现使用VBS脚本程序对直播间自动评论

    前言:本文使用的是VBS脚本,实现了对繁星直播自动登录,自动进入房间并且自动评论. 前提准备:把需要刷的评论放到mysql中,再使用vbs读出评论 -------------------------- ...

  4. 全选与单选chekbox的自定义实现(angular框架)

    2017年7月4日,我原本可以像其他同时一样早点回家,玩几把王者荣耀,但是我没有,因为我选择留下来,写一篇博客. 项目中经常性的会遇到什么点击"全选"按钮,勾中所有"单选 ...

  5. winform利用委托delegate进行窗体间通信,相同标题已经存在??

    前段时间学习委托,感觉很模糊的样子,也做过许多实例,但是项目中一直没有用到,今天在项目中遇到一个很简单的例子,现在拿出来,做一个简单的记录. 要求:将弹出框里勾选的内容返回到主面板上. 工具:委托. ...

  6. JAVA程序打包成exe小程序的过程

    编程软件:myeclipse2014 打包exe软件:exe4j 1:在myeclipse2014新建java项目编写程序 2:打包成jar,分两种情况(有无外部依赖包) 无外部依赖包:点击项目--- ...

  7. Wireshark网络端点和会话

    如果想让网络进行正常通信,你必须至少拥有两台设备进行数据流交互.端点(endpoint)就是指网络上能够发送和接受数据的一台设备.举例来说,在TCP/IP的通信中就有两个断电:接收和发送数据系统的IP ...

  8. JS实现为控件添加倒计时功能

    一.概述 在有些报表需求中,需要为控件添加倒计时功能,限制到某一个时间点后能进行一项操作或不能进行某项操作,比如查询,导出功能等等,又需要人性化地显示还有多少时间,即倒计时功能,比如下图中我们限制这个 ...

  9. dbgrid数据显示和数据源不同

    dbgrid数据显示和数据源不同,在ODBC配置时如下设置,去掉勾

  10. es6的一些个人总结

    es6的一些知识点 前言:es6(ECMAscript2015)标准 let.const.var的一些区别 let.const 块级作用域.全局作用域.函数作用域 var 全局作用域.函数作用域 变量 ...