一个简单的K-近邻
来源:互联网 发布:淘宝客招募网站 编辑:程序博客网 时间:2024/06/06 12:55
import numpyimport operatordef createDateSet(): #定义数据集 group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]]) labels = ['A','A','B','B'] return group, labelsgroup, labels = createDateSet()def classify0(inX, dataSet, labels , k): dataSetSize = dataSet.shape[0] # 判断二维数组的行数,也就是标签/样本的个数 diffMat = numpy.tile(inX, (dataSetSize, 1)) - dataSet #tile([0,0],(4,1))创建二维数组,[[0, 0],[0, 0],[0, 0],[0, 0]],减去原数组,获取差值 print(diffMat) sqDiffMat = diffMat**2 #差值为矩阵,矩阵*矩阵,对应元素相乘 print(sqDiffMat) sqDistance = sqDiffMat.sum(axis=1)#将一个矩阵的每一行元素相加 print(sqDistance) distance = sqDistance**0.5 #[ 1.48660687 1.41421356 0. 0.1 ] print(distance) sortedDistIndicies= sqDistance.argsort()#argsort()返回从小到大的索引值 [2 3 1 0] print(sortedDistIndicies) classCount = {} for i in range(k): voteIlabel = labels[sortedDistIndicies[i]] classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1 #classCount中如果有voteIlabel就+1,初始值为1(因为后边+1)。 print(classCount) sortedClassCount = sorted(classCount.items(),key = operator.itemgetter(1), reverse = True) #降序排列,key用来提取用于比较的值 return sortedClassCount[0][0]classify0([0,0], group, labels, 3)
阅读全文
0 0
- 一个简单的K-近邻
- k-近邻算法的简单Java版本
- KNN(K近邻)算法的简单入门
- 最简单的K近邻算法 KNN python实现
- C++实现的简单k近邻算法(K-Nearest-Neighbour,K-NN)
- opencv的K近邻算法
- k近邻算法的BUG!!!!!!
- k近邻算法(kNN):简单粗暴
- K-近邻算法实现简单filmClassify
- K 近邻
- k近邻
- k近邻
- k-近邻
- k-近邻
- k-近邻
- k近邻
- 简单易学的机器学习算法——K-近邻算法
- K近邻法及简单的约会网站预测系统(一)
- HashMap的实现原理和底层数据结构
- 产品经理的自我管理
- Python装饰器
- Linux 学习笔记_Linux网络管理_详解
- java基本数据类型长度
- 一个简单的K-近邻
- 使用观察者模式观察线程的生命周期
- 最短路条数
- XMPP协议
- 双十一大礼包之 心形曲线
- 不要62 HDU 2089
- ac自动机 +栈 洛谷
- 字母转换 栈
- MySQL巧用sum,case...when...优化统计查询