K-近邻算法实现简单filmClassify
来源:互联网 发布:dayz没有数据连接 编辑:程序博客网 时间:2024/06/16 02:24
k-近邻算法采用测量不同特征值之间的距离方法进行分类,属于监督学习。
主要代码如下:
def createDataSet(): group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]]) labels = ['A','A','B','B'] return group,labelsdef classify0(inX,dataSet,labels,k): dataSetSize = dataSet.shape[0] diffMat = tile(inX,(dataSetSize,1)) - dataSet sqDiffMat = diffMat **2 sqDistances = sqDiffMat.sum(axis=1) distances = sqDistances **0.5 sortedDistIndicies = distances.argsort() classCount = {} for i in range(k): voteIlabel = labels[sortedDistIndicies[i]] classCount[voteIlabel] = classCount.get(voteIlabel,0) +1 sortedClassCount = sorted(classCount.iteritems(),key=operator.itemgetter(1),reverse=True) return sortedClassCount[0][0]
createDataSet()用于导入数据;
主要介绍classify0(inX,dataSet,labels,k):
- 4个输入参数:用于分类的输入向量inX,训练样本集dataSet(是一个数组),标签向量labels,用于选择最近邻的数目k;
dataSetSize = dataSet.shape[0] 这一句使用到了NumPy的shape函数,返回矩阵/数组的不同维数的长度,第一个元素(shape[0])表示第一维的长度,亦即行数,即有几个训练数据;
diffMat = tile(inX, (dataSetSize,1)) - dataSet 这里用到了NumPy中的tile(A,reps)函数,用于扩充A,numpy.tile([0,0],(3,1))表示将(0,0)在行上重复3次,在列上重复1次;
sqDiffMat = diffMat**2 求平方;
sqDistances = sqDiffMat.sum(axis=1) 在列上求和;
distances = sqDistances**0.5 求开方,上面的几步是用来计算距离的;
sortedDistIndicies = distances.argsort()使用了argsort()函数,升序排序,返回数组值从小到大的索引index;
classCount={} 这是一个dict,用于存储不同标签出现的次数;
for i in range(k):
voteIlabel = labels[sortedDistIndicies[i]]
classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1
这里是选择距离最小的k个点, sortedDistIndicies已经排好序,只需迭代的取前k个样本点的labels(即标签),并计算该标签出现的次数,这里还用到了dict.get(key, default=None)函数,key就是dict中的键voteIlabel,如果不存在则返回一个0并存入dict,如果存在则读取当前值并+1;
sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True) 这里使用了sorted()函数sorted(iterable, cmp=None, key=None, reverse=False),iteritems()将dict分解为元组列表,operator.itemgetter(1)表示按照第二个元素的次序对元组进行排序,排序默认是升序,reverse=true表示反转,降序排序
阅读全文
0 0
- K-近邻算法实现简单filmClassify
- 最简单的K近邻算法 KNN python实现
- k近邻算法c++实现
- K-近邻算法python实现
- Python实现k-近邻算法
- k-近邻算法-python实现
- K近邻算法及其实现
- k-近邻 - 算法基本实现
- C++实现的简单k近邻算法(K-Nearest-Neighbour,K-NN)
- K最近邻结点算法(k-Nearest Neighbor algorithm)KNN——python简单实现
- k-近邻算法的简单Java版本
- k近邻算法(kNN):简单粗暴
- python实现最简单的机器学习算法之一-----K-近邻算法
- java实现K-最近邻算法
- K近邻分类算法实现 in Python
- K近邻算法(knn)及R实现
- k近邻算法的实现:kd树
- k近邻算法__kd树实现
- 矩阵连乘(动态规划)
- 文本处理方面的东西
- spring 整合hibernate java.lang.NoClassDefFoundError: org/hibernate/MappingExcep
- angularJs服务
- 虚函数析构函数三
- K-近邻算法实现简单filmClassify
- 二叉树的层排序
- 可重入函数与不可入函数
- 11.开源项目--git查看日志功能
- CK2010-Java SSM定制开发大众点评App后台
- css清除浮动大全,共8种方法。
- springmvc文件上传与下载
- React渲染HTML
- TF_Serving 部署一个模型