美文网首页
CH2 kNN algorithm

CH2 kNN algorithm

作者: Trancer95 | 来源:发表于2017-06-30 16:33 被阅读0次
kNN近邻算法

1.算法描述

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

kNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。

kNN方法在类别决策时,只与极少量的相邻样本有关。由于kNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,kNN方法较其他方法更为适合。

2.Python代码实现

kNN.py:

datingTestSet2.txt

//注释:

# shape[0]获取行 shape[1] 获取列

#tile类似于matlab中的repmat,复制矩阵

# 获取类别

#字典的get方法,查找classCount中是否包含voteIlabel,是则返回该值,不是则返回defValue,这里是0# 其实这也就是计算K临近点中出现的类别的频率,以次数体现

#  对字典中的类别出现次数进行排序,classCount中存储的事 key-value,其中key就是label,value就是出现的次数#  所以key=operator.itemgetter(1)选中的事value,也就是对次数进行排序

#sortedClassCount[0][0]也就是排序后的次数最大的那个label

详解:

dataSet.shape[0]:表示训练集中向量的个数。

shape[n]:表示第n维的长度

例如:

>>>group.shape[0]

4

>>>group.shape[1]

2

tile(inX,(dataSetSize,1)):得到的是dataSetSize个的inX。

tile(A,reps):construct an array by repeating A the number of times given by reps.

具体用法可见:docs.scipy.org/doc/numpy/reference/generated/numpy.tile.html

sqDiffMat.sum(axis=1):得到的是第二维的所有元素之和。

具体用法可见:docs.scipy.org/doc/numpy/reference/generated/numpy.sum.html

distances.argsort():是将distances里的元素从小到大排列,得到一个对应原来的元素的顺序排列。

具体用法可见:docs.scipy.org/doc/numpy/reference/generated/numpy.argsort.html

classCount.get(voteIlabel,0):返回字典中,voteIlabel的值,如果没有,则创建,并将值设为0(即第二个参数)。

sortedClassCount = sorted(classCount.items(),

key = operator.itemgetter(1),reverse = True)

将字典按照item的第一维逆向排序。

在Ubuntu系统终端中打开python,

>>> import kNN

>>> group,labels = kNN.createDataSet()

>>> group

array([[ 1. ,  1.1],

[ 1. ,  1. ],

[ 0. ,  0. ],

[ 0. ,  0.1]])

>>> labels

['A', 'A', 'B', 'B']

>>> kNN.classify0([0,0],group,labels,3)

'B'

>>> kNN.classify0([1.2,1.6],group,labels,3)

'A'

3:案例—约会网站

datingTestSet2.txt

下载链接:http://download.csdn.net/download/u012005313/9190017


相关文章

  • CH2 kNN algorithm

    1.算法描述 邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最...

  • KNN

    KNN学习笔记 KNN is a classification algorithm which is instan...

  • 硬核机器学习干货,手把手教你写KNN!

    一、什么是KNN? k-近邻算法(k-Nearest Neighbour algorithm),又称为KNN算法,...

  • 第七天 KNN近邻法

    什么是KNN KNN算法的全名是K-Nearest Neighbor Algorithm, 它是一个简单且应用广泛...

  • KNN--K邻近分类算法

    KNN:K-Nearest Neighbor algorithm 本文转载自:http://blog.csdn.n...

  • KNN学习

    一、原理 k-近邻算法(k-Nearest Neighbour algorithm),又称为KNN算法,是数据挖掘...

  • 不调包!自己整一个KNN函数(更新版)

    KNN,全称K-Nearest Neighbors Algorithm,是一种非参数、监督的分类方法。 那么引出一...

  • MLA CH2 kNN code part

    Python实例 kNN.py: 输出结果 得出结果:“?”是Romance Movie 如何测试分类器(clas...

  • MLA CH2 kNN theory part

    在这一部分书中的例子是电影的分类 kNN理论,如何用距离来分类 python导入数据 陷阱/隐患 2.1 以距离度...

  • CH2 Release

    @(Python)[CH2] Neil 完成 ch2 任务啦 任务成果地址 : city_weather 任务成果...

网友评论

      本文标题:CH2 kNN algorithm

      本文链接:https://www.haomeiwen.com/subject/sthicxtx.html