《机器学习实战》学习笔记1
来源:互联网 发布:又拍云存储 域名 编辑:程序博客网 时间:2024/05/18 00:44
此学习笔记是基于《机器学习实战》中的内容所写的,虽然不是什么大神,但是还是写出来和大家分享,希望能有帮助。如果文章中有什么错误,也敬请指正。此外,有些代码其实现在我也不太理解,所以没有写出来,如果有什么问题希望大家能一起讨论,一起进步。
更多内容见书2.1.2 实施kNN分类算法
1.kNN代码
import numpy as npimport operatordef classify0(inX,dataSet,labels,k): dataSetSize=dataSet.shape[0] diffMat=np.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): votelIlabel=labels[sortedDistIndicies[i]] classCount[votelIlabel]=classCount.get(votelIlabel,0)+1 sortedClassCount=sorted(classCount.iteritems(),key=operator.itemgetter(1),reverse=True) return sortedClassCount[0][0]def createDateSet(): group=np.array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]]) labels=['A','A','B','B'] return group,labels
以下是我在理解这段代码时的笔记
1.shape[0]返回的是行数(shape[1]返回列数)
在理解shape函数时,我参考了http://blog.csdn.net/by_study/article/details/67633593
在group中,是一个4*2矩阵,行数为4,即dataSetSize=4
group=np.array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
2.tile函数
参考文章https://jingyan.baidu.com/article/219f4bf7da4d8dde442d389e.html
假设输入向量inX为(x0,y0),那么tile函数做了这个工作,化为[[x0,y0],[x0,y0],[x0,y0],[x0,y0]]
diffMat=np.tile(inX,(dataSetSize,1))-dataSet
即为[[x0-1.0,y0-1.1],[x0-1.0,y0-1.0],[x0-0,y0-0],[x0-0,y0-0.1]]
3.sum函数
sqDistances=sqDiffMat.sum(axis=1)
anis=0表示按行求和,anis=1表示按列求和
>>> np.sum([[0, 1], [0, 5]], axis=0)array([0, 6])>>> np.sum([[0, 1], [0, 5]], axis=1)array([1, 5])
因此此时执行的是(x0-1.0)^2+(y0-1.1)^2,……以此类推
4.argsort函数
sortedDistIndicies=distances.argsort()
该函数的作用是将数组中的各个元素从小到大排列,提取出索引值并输出新的数组
参考文章http://www.cnblogs.com/yyxf1413/p/6253995.html
到这一步位置,已经计算出当前点与所有数据点的距离并将这些距离从小到大排列出来
接下来
for i in range(k):
votelIlabel=labels[sortedDistIndicies[i]] #确定前k个点所对应的标签 classCount[votelIlabel]=classCount.get(votelIlabel,0)+1 sortedClassCount=sorted(classCount.iteritems(),key=operator.itemgetter(1),reverse=True) return sortedClassCount[0][0] #返回发生频率最高的元素标签
参考文章1.http://www.cnblogs.com/100thMountain/p/4719503.html
参考文章2.http://www.cnblogs.com/zle1992/p/6271105.html
6.iteritems函数
参考文章http://www.cnblogs.com/huxi/archive/2011/07/01/2095931.html
最后在python开发环境中输入下列命令:
>>> import kNN
>>>
group
, labels = kNN.createDataSet()- 机器学习实战笔记1
- 机器学习实战笔记1
- 机器学习实战笔记
- 笔记-《机器学习实战》
- 机器学习实战笔记
- 《机器学习实战》笔记
- 《机器学习实战》学习笔记1
- 《机器学习实战》学习笔记1
- 机器学习实战 学习笔记
- 《机器学习实战》学习笔记
- 机器学习实战学习笔记
- 机器学习实战---学习笔记
- 机器学习实战笔记1(机器学习基础)
- 机器学习实战笔记(1)机器学习基础
- 【机器学习】《机器学习实战》笔记
- 机器学习实战笔记-1基础
- 《机器学习实战》之kNN-笔记1
- 机器学习实战笔记:决策树
- Eclipse上Maven环境配置使用 (全)
- ios 微信返回页面标题无更改更新
- mysqldump: Got error: 1290: The MySQL server is running with the --secure-file-priv option so it can
- linux下动态库so文件的一些认识
- springmvc源码扩展——自定义参数解析
- 《机器学习实战》学习笔记1
- POJ 1222 EXTENDED LIGHTS OUT
- android复制assets里的压缩文件到sdcard里并解压
- Groovy语法之闭包
- xxx cannot be resolved to a type
- js基本功—干货
- Java 自带的线程池Executors.newFixedThreadPool
- [NOIP模拟赛]同色齿轮问题
- 2.2 评估方法