KNN算法Python实现

好久没有写博客了,心血来潮。写一个刚学学习的KNN算法,其实就是比相似度,靠的进的相似度高

废话不说上代码

from numpy import  *
import operator 

#创建初始矩阵
group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
label = ['A','A','B','B']

def classfy(inX,dataSet,labes,k):
    dataSetSize = dataSet.shape[0]#获取矩阵的维度,就是矩阵的行数
    diffMat = tile(inX,(dataSetSize,1))-dataSet#求相对距离
    sqDiffMat = diffMat**2
    sqDistance = sqDiffMat.sum(axis=1)
    distance = sqDistance**0.5#两点之间距离公式不解释
    sortedDistInicies = distance.argsort()#得到排序后的下标【2,3,1,0】
    classCount = {}
    for i in range(k):
        voteIlabel = labes[sortedDistInicies[i]]#此处就和K相关了
        classCount[voteIlabel] = classCount.get(voteIlabel,0)+1#记录出现的次数
    sortedClassCount = sorted(classCount.iteritems(),key=operator.itemgetter(1),reverse=True)
    return sortedClassCount[0][0]#返回最终的结果

classfy([0,0],group,label,3)

都在代码注解里面,ok完成

时间: 2024-10-13 10:40:03

KNN算法Python实现的相关文章

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

kNN算法 算法优缺点: 优点:精度高.对异常值不敏感.无输入数据假定 缺点:时间复杂度和空间复杂度都很高 适用数据范围:数值型和标称型 算法的思路: KNN算法(全称K最近邻算法),算法的思想很简单,简单的说就是物以类聚,也就是说我们从一堆已知的训练集中找出k个与目标最靠近的,然后看他们中最多的分类是哪个,就以这个为依据分类. 函数解析: 库函数 tile() 如tile(A,n)就是将A重复n次 a = np.array([0, 1, 2]) np.tile(a, 2) array([0,

KNN算法--python实现

邻近算法 或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一.所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表. 关于K最近邻算法,非常好的一篇文章:KNN算法理解 行业应用:  客户流失预测.欺诈侦测等(更适合于稀有事件的分类问题) 写在前面的:Python2.7 数据iris: http://pan.baidu.com/s/1bHuQ0A   测试数据集: iris的第1行数据: 训练数据: iris

KNN算法——python实现

二.Python实现 对于机器学习而已,Python需要额外安装三件宝,分别是Numpy,scipy和Matplotlib.前两者用于数值计算,后者用于画图.安装很简单,直接到各自的官网下载回来安装即可.安装程序会自动搜索我们的python版本和目录,然后安装到python支持的搜索路径下.反正就python和这三个插件都默认安装就没问题了. 另外,如果我们需要添加我们的脚本目录进Python的目录(这样Python的命令行就可以直接import),可以在系统环境变量中添加:PYTHONPATH

[机器学习]kNN算法python实现(实例:数字识别)

# 使用好任何机器学习算法的前提是选好Features from numpy import * import operator from os import listdir def classify0(inX, dataSet, labels, k):     dataSetSize = dataSet.shape[0]     diffMat = tile(inX, (dataSetSize,1)) - dataSet     sqDiffMat = diffMat**2     sqDist

机器学习之KNN算法

1 KNN算法 1.1 KNN算法简介 KNN(K-Nearest Neighbor)工作原理:存在一个样本数据集合,也称为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类对应的关系.输入没有标签的数据后,将新数据中的每个特征与样本集中数据对应的特征进行比较,提取出样本集中特征最相似数据(最近邻)的分类标签.一般来说,我们只选择样本数据集中前k个最相似的数据,这就是k近邻算法中k的出处,通常k是不大于20的整数.最后选择k个最相似数据中出现次数最多的分类作为新数据

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

KNN算法,故名思议,K个最邻近值的分类算法.监督学习中的一种,典型的懒人算法,通过计算所有的预测样本到学习样本的距离,选取其中K个最小值加入样本组中,样本组中的样本隶属于那个分类的个数最多,那么我们就预测我们的预测样本是属于这个类型的. 学习来源某个pdf(别人的学习笔记): 第四章 KNN(k最邻近分类算法) 最邻近分类算法) 最邻近分类算法) 最邻近分类算法) 最邻近分类算法) 最邻近分类算法) 最邻近分类算法) 最邻近分类算法) 1.算法 思路 通过计算每个训练样例到待分类品的 距离,取

Python KNN算法

机器学习新手,接触的是<机器学习实战>这本书,感觉书中描述简单易懂,但对于python语言不熟悉的我,也有很大的空间.今天学习的是k-近邻算法. 1. 简述机器学习 在日常生活中,人们很难直接从原始数据本身获得所需信息.而机器学习就是把生活中无序的数据转换成有用的信息.例如,对于垃圾邮件的检测,侦测一个单词是否存在并没有多大的作用,然而当某几个特定单词同时出现时,再辅以考虑邮件的长度及其他因素,人们就可以更准确地判定该邮件是否为垃圾邮件. 机器学习分为监督学习和无监督学习,其中: (1)监督学

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

应用kNN算法预测豆瓣电影用户的性别 摘要 本文认为不同性别的人偏好的电影类型会有所不同,因此进行了此实验.利用较为活跃的274位豆瓣用户最近观看的100部电影,对其类型进行统计,以得到的37种电影类型作为属性特征,以用户性别作为标签构建样本集.使用kNN算法构建豆瓣电影用户性别分类器,使用样本中的90%作为训练样本,10%作为测试样本,准确率可以达到81.48%. 实验数据 本次实验所用数据为豆瓣用户标记的看过的电影,选取了274位豆瓣用户最近看过的100部电影.对每个用户的电影类型进行统计.

机器学习经典算法详解及Python实现--K近邻(KNN)算法

(一)KNN依然是一种监督学习算法 KNN(K Nearest Neighbors,K近邻 )算法是机器学习所有算法中理论最简单,最好理解的.KNN是一种基于实例的学习,通过计算新数据与训练数据特征值之间的距离,然后选取K(K>=1)个距离最近的邻居进行分类判断(投票法)或者回归.如果K=1,那么新数据被简单分配给其近邻的类.KNN算法算是监督学习还是无监督学习呢?首先来看一下监督学习和无监督学习的定义.对于监督学习,数据都有明确的label(分类针对离散分布,回归针对连续分布),根据机器学习产