ML-KNN
来源:互联网 发布:一键配置java环境 编辑:程序博客网 时间:2024/05/17 03:50
KNN-k 近邻算法
KNN属于分类算法,原理比较简单,简单概括就是对测试数据和所哟样本点进行距离的测算,最后选取K个最近的点的集合, 在其中选取类别出现最多的点的分类作为测试数据的分类。
以图说明,这里存在矩阵
trainMat = array([[1.,1.1],[1.,1.],[0.,0.],[0.,0.1]])作图:
当我们的测试点(x1,y1)分别计算和这些店的距离之后,选出k个最小距离点之后,统计这k个点哪个类别的点最多就选这个类别, 很简单吧。
KNN代码实现:
def KNN_classify(testmat,dataset,labels,k):dataSetSize = dataset.shape[0]#求两点间的距离公式diffMat = tile(testmat,(dataSetSize,1)) - datasetsqdiffMat = diffMat ** 2sqdistance = sqdiffMat.sum(axis=1)distance = sqdistance ** 0.5sortdistance = distance.argsort() #排序print sortdistanceclasscount = {}#统计前k个数据的类别出现次数for i in range(k):votelabel = labels[sortdistance[i]]classcount[votelabel] = classcount.get(votelabel,0) + 1sortedclass = sorted(classcount.iteritems(),key = operator.itemgetter(1),reverse=True)return sortedclass[0][0]
使用上面的训练数据进行新数据的分类测试
xData = array([[ 1., 1.1], [ 1.,1. ], [ 0.,0. ], [ 0., 0.1], [ 1., 2. ], [ 3., 2. ], [ 0.5, 0.8]])yLabel = array([1,1,-1,-1,1,1,-1])分别测试两个数据点
xinx1 = array([[0.,0.2]])xinx2 = array([[5,2]])print KNN_classify(xinx1,xData,yLabel,4)print KNN_classify(xinx2,xData,yLabel,4)得到结果
-1
1
总结: KNN算法是分类算法中最简单有效的算法,kNN 基于实例学习,所以每次进行分类的时候都需要将所有的训练数据一起进行学习,这样就带了内存和效率上的损失,属于非参数行分类学习。KNN对于严重大数值型数据比较敏感,如果上一例中训练数据中有比较大的坐标位置,这样在计算距离的时候就容易产生偏差,所以要用到归一化的工具来同意训练数据(归一化的问题在以后的博文中会介绍)
阅读全文
0 0
- ML-KNN
- ML算法-kNN
- opencv7-ml之KNN
- ML实验-KNN
- 【ML算法】KNN算法
- ML实验-KNN(续)
- ML-KNN(多标签分类)
- ML基础---KNN的应用
- ML一:python的KNN算法
- ML—knn与kd树
- ML-kNN 多标签k近邻算法
- ML-kNN 多标签k近邻算法
- k-近邻法KNN-机器学习ML
- ML-kNN 多标签k近邻算法 MLL Week 1
- ML-kNN 多标签k近邻算法 MLL (转)
- 程序片段----opencv cv::ml::KNearest knn 20170904
- ml
- ML
- 数字签名算法的具体使用测试
- MSSQL触发器实现微信消息的发送
- 计算机组成(1)
- PAT乙级 1013. 数素数 (20)
- 关于压缩感知的一些小原理
- ML-KNN
- jupyter中文显示问题
- dk与jre的区别,配置jdk和jre
- 无锁队列的实现
- PAT乙级 1014. 福尔摩斯的约会 (20)
- scala 学习笔记之条件控制
- Android studio release版SHA1与debug版SHA1获取
- connect函数和accept函数哪个先返回? 客户端和服务端哪个先完成建立tcp连接?
- POJ 1753(Flip Game)