数据挖掘算法入门1——knn

来源:互联网 发布:最新卷皮淘宝客源码 编辑:程序博客网 时间:2024/06/03 21:37

knn算法简介及其简单实现

基本想法:

已知样本的属性以及所属类别。在预测新的数据点类别时,通过计算该预测点到每个样本的距离,选出距离最近的K个点。然后通过这K个点的投票结果

决定被预测的点属于那种类别。

如上图:绿色圆点代表我们需要预测的点。其他点的属性和类别均为已知。要判断绿色点属于那种类别,只需计算绿色点到各个点的距离。我们选出

K个距离最近的点。然后这K个点进行投票,得票的结果即使绿色点所属的类别。

我们用伪代码来表示:

(1)把样本数据抽象为坐标系的点。

(2)通过公式计算绿色点到各个点的距离

(3)K个最近的点进行投票表决。


这里饮用python的机器学习库sklearn,进行训练

import numpy as np  
from sklearn import neighbors  
knn = neighbors.KNeighborsClassifier() #取得knn分类器  
data = np.array([[3,104],[2,100],[1,81],[101,10],[99,5],[98,2]]) # <span style="font-family:Arial, Helvetica, sans-serif;">data对应着打斗次数和接吻次数</span>  
labels = np.array([1,1,1,2,2,2]) #<span style="font-family:Arial, Helvetica, sans-serif;">labels则是对应Romance和Action</span>  
knn.fit(data,labels) #导入数据进行训练'''  
knn.predict([18,90])

说明:

首先,用labels数组中的1和2代表Romance和Aciton,因为sklearn不接受字符数组作为标志,只能用1,2这样的int型数据来表示,后面处理可以将1和2映射到Romance和Action上来。fit则是用data和labels进行训练,data对应的是打斗次数和接吻次数构成的向量,称之为特征向量。labels则是这个数据所代表的电影所属的类型。调用predict 进行预测,将未知电影的特征向量代入,则能分析出该未知电影所属的类型。此处计算结果为1,也就是该未知电影属于Romance,和直觉相符。

















本文旨在简介常用的数据挖掘算法的及其实现,以简单的编码实现算法入门的讲解。引用了一些常见的网络资料,内侵删。


0 0
原创粉丝点击