KNN算法--python实现
邻近算法
或者说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实现的更多相关文章
- kNN算法python实现和简单数字识别
kNN算法 算法优缺点: 优点:精度高.对异常值不敏感.无输入数据假定 缺点:时间复杂度和空间复杂度都很高 适用数据范围:数值型和标称型 算法的思路: KNN算法(全称K最近邻算法),算法的思想很简单 ...
- KNN算法python实现
1 KNN 算法 knn,k-NearestNeighbor,即寻找与点最近的k个点. 2 KNN numpy实现 效果: k=1 k=2 3 numpy 广播,聚合操作. 这里求距离函数,求某点和集 ...
- KNN算法——python实现
二.Python实现 对于机器学习而已,Python需要额外安装三件宝,分别是Numpy,scipy和Matplotlib.前两者用于数值计算,后者用于画图.安装很简单,直接到各自的官网下载回来安装即 ...
- KNN算法python实现小样例
K近邻算法概述优点:精度高.对异常数据不敏感.无数据输入假定缺点:计算复杂度高.空间复杂度高适用数据范围:数值型和标称型工作原理:存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签 ...
- 机器学习——KNN算法(k近邻算法)
一 KNN算法 1. KNN算法简介 KNN(K-Nearest Neighbor)工作原理:存在一个样本数据集合,也称为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分 ...
- 机器学习之KNN算法
1 KNN算法 1.1 KNN算法简介 KNN(K-Nearest Neighbor)工作原理:存在一个样本数据集合,也称为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属 ...
- [Python] 应用kNN算法预测豆瓣电影用户的性别
应用kNN算法预测豆瓣电影用户的性别 摘要 本文认为不同性别的人偏好的电影类型会有所不同,因此进行了此实验.利用较为活跃的274位豆瓣用户最近观看的100部电影,对其类型进行统计,以得到的37种电影类 ...
- k-近邻(KNN)算法改进约会网站的配对效果[Python]
使用Python实现k-近邻算法的一般流程为: 1.收集数据:提供文本文件 2.准备数据:使用Python解析文本文件,预处理 3.分析数据:可视化处理 4.训练算法:此步骤不适用与k——近邻算法 5 ...
- kNN算法基本原理与Python代码实践
kNN是一种常见的监督学习方法.工作机制简单:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k各训练样本,然后基于这k个“邻居”的信息来进行预测,通常,在分类任务中可使用“投票法”,即选择这k ...
随机推荐
- oracle创建数据库到2%不动问题
- 题解 最优的挤奶方案(Optimal Milking)
最优的挤奶方案(Optimal Milking) 时间限制: 1 Sec 内存限制: 128 MB 题目描述 农场主 John 将他的 K(1≤K≤30)个挤奶器运到牧场,在那里有 C(1≤C≤20 ...
- Mac: 易用设置
Mac是一个类unix系统,因此很多命令是类似于Linux的.例如其中的Terminal, shell等等.但是软件源鉴于国内的网络环境,是不方便配置的. 中文输入法快速切换. 在不同的语言中可以用组 ...
- linux软件包介绍
一. 软件包的种类 源码包 二进制包(rpm包.系统默认包) 二. 优缺点对比 源码包 源码包的优点 1) 开源,源码可见,且可以修改 2) 配置更加灵活,可以自由选择所需的功能 3) 软件是编译安装 ...
- DH 密钥交换算法
1.引言 CSDN搞什么短信验证,7年的账号居然登陆不了,真心抓狂,WTF!!!! DH,全称为"Diffie-Hellman",这是一种确保共享KEY安全穿越不安全网络的方法,换 ...
- php防止浏览器点击返回按钮重复提交数据
<!--html中存放隐藏域数据--> <input type="hidden" value='{$sun_nums}' name='sub_nums' /> ...
- 传输层socket通讯之java实现
使用流套接字来示例一个客户/服务器的应用.客户端的应用连接到服务器上面,服务端的应用发送数据到客户端,然后客户将收到的数据显示出来. 服务端代码: package socket; import jav ...
- linux vim编辑
常用vim操作自我总结,大神请回避: vim 打开退出保存 打开:直接打开 vim practice_1.txt也可以先打开vim,后:e 文件路径 保存::w 文件名或者退出保存:wq! 普通模式下 ...
- Spring Security Filter详解
Spring Security Filter详解 汇总 Filter 作用 DelegatingFilterProxy Spring Security基于这个Filter建立拦截机制 Abstract ...
- 计算机程序的思维逻辑 (91) - Lambda表达式
在之前的章节中,我们的讨论基本都是基于Java 7的,从本节开始,我们探讨Java 8的一些特性,主要内容包括: 传递行为代码 - Lambda表达式 函数式数据处理 - 流 组合式异步编程 - C ...