KNN分类算法
2019-06-12 18:11
1676 查看
用K近邻算法实现分类任务
先创建一个提供数据集和标签的函数
from numpy import * import operator #此为运算符模块,之后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, labels
KNN分类算法
伪代码如下:
对输入的数据集(暂未确定标签)中的每个样本(点)依次执行以下操作:
- 计算它与已知类别数据集中的每个样本(点)的距离;
- 对距离进行升序排序,即距离越小的已知样本(点)排在越前面;
- 选取前k个已知样本(点);
- 确定前k个点所在类别的出现频率;
- 返回前k个点中出现频率最高的类别作为当前未知点的分类。
kNN分类算法代码如下,有些函数不懂,具体用法介绍已经附在代码后面。
#inX为输入向量,dataSet为输入的训练样本集,labels为标签向量,k就是那个k def 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 #以上是选取k个点,标注标签的出现次数 sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True) #以上是根据次数排序 return sortedClassCount[0][0]
numpy.tile()函数
numpy.argsort()函数
dict_name.iteritems用法以及和dict_name.item区别
sorted()函数
代入数据检验
group, labels = createDataSet() print(gruop) print(labels) print(classify0([0,0],group,labels,3)
结果是B类
kNN分类算法实例
相关文章推荐
- scikit-learn k-近邻分类算法(kNN)
- CV最简单的分类算法——knn(k nearest neighbors)
- Python KNN分类算法学习
- K邻近(KNN)分类和预测算法的原理及实现
- KNN分类算法及其改进
- 数据挖掘之分类算法---knn算法(Matlab代码)
- KNN(K-Nearest Neighbor)分类算法原理
- 机器学习 -- KNN(k-Nearest Neighbor)最邻近规则分类算法
- 用KNN算法分类CIFAR-10图片数据
- chapter5:分类的进一步探讨---算法评估及kNN
- 【深度学习基础-04】最邻近规则分类(K Nearest Neighbor)KNN算法
- 《机器学习实战》--k近邻分类算法kNN
- KNN(K-最近邻分类)分类算法
- 机器学习第二个算法KNN(最邻近规则分类KNN算法)
- 机器学习——最邻近规则分类(K Nearest Neighbor)KNN算法的应用
- 机器学习(二)k-近邻分类算法(kNN)
- 基于qt和opencv3实现机器学习之:利用最近邻算法(knn)实现手写数字分类
- KNN分类算法--python实现
- KNN分类算法
- 数据挖掘回顾一:分类算法之 kNN 算法