[机器学习]k-邻近算法
来源:互联网 发布:论文数据造假会被发现 编辑:程序博客网 时间:2024/04/25 15:58
最近开始入门机器学习,使用的是图灵程序设计丛书《机器学习实战》。
k-邻近算法 即是KNN算法,是用来做归类的,也就是说,有一个样本空间里的样本分成很几个类型,然后,给定一个待分类的数据,通过计算接近自己最近的K个样本来判断这个待分类数据属于哪个分类。你可以简单的理解为由那离自己最近的K个点来投票决定待分类数据归为哪一类。计算最近k样本的指标是距离,用的是欧式距离公式;
在欧几里得空间中,点x =(x1,...,xn)和 y =(y1,...,yn)之间的欧氏距离为
然后对求得距离进行升序排序,选择k个最小的距离(通常k是小于20),观察这k个最小距离的样本是在什么类型里面的,如果大部分的样本都是属于同一个类型,那么我们就有把握推测这个测试的样本是属于这个类型的。
下面是最简单的一个实现:
from numpy import *import operatordef createDataSet(): group = array([[0,0],[100,0],[100,100],[0,100]]) labels = ['A', 'B', ' C', 'D'] return group, labelsdef classify(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.items(),key=operator.itemgetter(1),reverse=True) return sortedClassCount[0][0]def main(): dataSet, labels = createDataSet() print(classify([90, 0.9], dataSet, labels, 1))if __name__ == '__main__': main()得出的结果是B,其实这就是在一个平面里面随机设置一个点,观察这个点距离哪一个顶点最接近就属于哪一类,然而维度是可以增加的。
你可能疑惑numpy.tile()这个函数什么意思。
>>> import numpy >>> numpy.tile([1,0],5)#在列方向上重复[0,0]5次,默认行1次 array([1, 0, 1, 0, 1, 0, 1, 0, 1, 0]) >>> numpy.tile([2,2],(1,1))#在列方向上重复[0,0]1次,行1次 array([[2, 2]]) >>> numpy.tile([3,4],(3,1)) array([[3, 4], [3, 4], [3, 4]]) >>> numpy.tile([0,0],(1,3))#在列方向上重复[0,0]3次,行1次 array([[0, 0, 0, 0, 0, 0]])
对于sum函数里的(axis=1)
加入axis=1以后就是将一个矩阵的每一行向量相加
例如:
import numpy as np
np.sum([[0,1,2],[2,1,3],axis=1)的结果就是:array([3,6])
另外还有一个提醒:
use dict.items()
instead of dict.iteritems()
iteritems()
was removed in python3, so you can't use this method anymore.
也就是说dict.items()
代替了 dict.iteritems()
0 0
- [机器学习]k-邻近算法
- 【机器学习实战】K-邻近算法
- 机器学习实战之K-邻近算法
- 机器学习之K邻近算法 (KNN)
- k-邻近算法学习
- 机器学习算法——K邻近算法
- 机器学习算法及代码实现--K邻近算法
- 机器学习算法之 KNN k邻近算法
- 关于机器学习k邻近算法的学习笔记
- 机器学习学习笔记2---k邻近算法的实现
- 【机器学习——K最邻近算法】
- Python机器学习实战<三>:k-邻近算法
- 机器学习——k邻近算法测试
- 机器学习——k邻近算法的数据解析
- 机器学习实战笔记(二):K邻近算法
- 机器学习实战之——KNN k-邻近算法
- 机器学习实战笔记(k邻近算法)
- 机器学习实战——k-邻近算法
- Android的消息机制
- AS Gradle编译failed的处理
- netcat使用教程
- Python源码学习笔记 4 列表对象
- Spring mvc 中ajax的处理
- [机器学习]k-邻近算法
- centos6源码编译安装lamp
- 运动检测方法-帧间差分
- Java进阶资源汇总
- 简单的使用spring
- LeetCode-198. House Robber (JAVA)寻找数组不相邻组合最大值DP
- 【整理收集】电驴资源站整理
- http请求的响应码大全
- Qt--操作sqlite总结