python33 kNN算法的详细解释
来源:互联网 发布:达内 融资数据教育 编辑:程序博客网 时间:2024/06/05 16:07
虽然了解过python,但是numpy和operator还是第一次使用,虽然知道knn算法的操作步骤,但是刚开始看这个算法还是不太能明白每一行代码的作用滴。所以要记录下来啦: 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.items(),key=operator.itemgetter(1), reverse=True) returnsortedClassCount[0][0]
dataSetSize = dataSet.shape[0] #dataSet的行数 diffMat = tile(inX, (dataSetSize,1)) - dataSet #通过tile把inX的单行向量扩展到和dataSet同样的行数,然后将inX与样本集中的每行做差,得到差矩阵(这是为了进行计算欧氏距离) sqDiffMat = diffMat**2 #每行的分量计算平方值 sqDistances = sqDiffMat.sum(axis=1)#每行进行求和(axis=0是列) distances = sqDistances**0.5 #对每个分量开方(这就得到了inX与dataSet中的每个训练集的欧氏距离) sortedDistIndicies =distances.argsort()返回升序排序后的结果,返回的是distances的分量的下标,下标从0开始 classCount={} #字典 for i in range(k): #range(k)返回[0,1,...k-1] voteIlabel= labels[sortedDistIndicies[i]] #取得排序数据(原数据的下标)所对应的标签 classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1 #对出现的标签进行计数,当classCount中没有对应的'key'为voteIlabel时,返回0 sortedClassCount =sorted(classCount.items(), key=operator.itemgetter(1),reverse=True) #在python2中使用iteritems()以迭代器对象返回字典键值对但是我现在用的是python3.3所以python中的dict么有了iteritems(),但是有items()返回只读类集合对象,所以使用items(),然后按照第二个元素的顺序排序 按照逆序排序, return sortedClassCount[0][0] #返回最终inX所应该属于的标签(取得的k个递增数据所对应的标签通过上面的步骤进行了每个标签的数量统计,最终获得了标签逆序排序,其中sortedClassCount[0][0]就是k个中出现频率最高的那个标签sortedClassCount[0][1]是对应的频次。
首先是kNN算法:python33
def classify0(inX, dataSet, labels, k):
##################################################################################################
首先函数参数解释(inX, dataSet, labels,k)其中inX是要进行分类的输入向量,dataSet是已经存在的训练样本集矩阵, labels与dataSet每一行对应的标签组成的向量, k是用于对inX进行排序的总体计算结果中的前k个(经过排序的前k个)
接下来是每行的解释
##################################################################################################
def classify0(inX, dataSet, labels,k):
0 0
- python33 kNN算法的详细解释
- KNN算法 代码详细解释
- 转:经典的KNN算法解释
- BM 算法的详细解释
- SIFT算法的详细解释
- 机器学习KNN算法很好的解释和实例
- 关于KM算法的详细解释
- KMP算法的详细解释及实现
- KMP算法的详细解释及实现
- knn算法的介绍
- KNN算法的实现
- KNN算法的总结
- KNN算法的实现
- kNN算法的优缺点
- KNN算法的实现
- RSA算法详细解释
- python33相对于python2的不同---记…
- KNN算法的實現
- PD 脚本中列名注释用Name属性
- android http连接设置
- PAT10231023. 组个最小数 (20)
- introduction to linear
- 【c语言】【指针】设变量定义为int x,*p=&x;则&*p相当于?
- python33 kNN算法的详细解释
- python33相对于python2的不同---记…
- Geometric Context from a Single
- 单张图像重建3D场景
- PRML-读书笔记(一)介绍 书中用到…
- C++中cos,sin,asin,acos这些三角函…
- 性别区分
- linux删除文件夹下所有内容
- PRML-读书笔记(零)数学符号