觋祉对《机器学习实战》的笔记(2)
-
第9页 Python中的sorted函数以及operator.itemgetter函数
问题: 其中: kNN算法实现的排序解释 (code: 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 sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True) ---------------------------3 return sortedClassCount[0][0] ) 其中3的使用自己从来没有这样使用过,好简洁明快的写法,赞一个,学习一下。 sorted 和 key=operator.itemgetter(1)的解释如下: (参见:http://blog.csdn.net/dongtingzhizi/article/details/12068205) operator.itemgetter函数获取的不是值,而是定义了一个函数,通过该函数作用到对象上才能获取值。 sorted函数 Python内置的排序函数sorted可以对list或者iterator进行排序,官网文档见:http://docs.python.org/2/library/functions.html?highlight=sorted#sorted,该函数原型为: sorted(iterable[, cmp[, key[, reverse]]]) 参数解释: (3)key为函数,指定取待排序元素的哪一项进行排序,函数用上面的例子来说明,代码如下: sorted(students, key=lambda student : student[2]) key指定的lambda函数功能是去元素student的第三个域(即:student[2]),因此sorted排序时,会以students所有元素的第三个域来进行排序。 有了上面的operator.itemgetter函数,也可以用该函数来实现,例如要通过student的第三个域排序,可以这么写: sorted(students, key=operator.itemgetter(2)) sorted函数也可以进行多级排序,例如要根据第二个域和第三个域进行排序,可以这么写: sorted(students, key=operator.itemgetter(1,2)) 即先跟句第二个域排序,再根据第三个域排序
-
第25页 2.2.3 准备数据: 归一化数值
关于tile() [popexizhi] 1.原书中tile(minVals, (m,1)) 是对minVals 做出一个dataSet的矩阵的结果 这里m = dataSet.shape[0] 这个 A.shape[0] 是取A的x轴,以此类推如果是A.shape[1]就是A的y轴(如果A有y轴的话) 2.同理tile(ranges,(m,1)) 是构建一个ranges的dataSet矩阵 参见:http://blog.csdn.net/ksearch/article/details/21388985 numpy中的tile函数 tile函数 在看机器学习实战这本书时,遇到numpy.tile(A,B)函数,愣是没看懂怎么回事,装了numpy模块后,实验了几把,原来是这样子: 重复A,B次,这里的B可以时int类型也可以是远组类型。 [python] view plain copy 在CODE上查看代码片派生到我的代码片 >>> import numpy >>> numpy.tile([0,0],5)#在列方向上重复[0,0]5次,默认行1次 array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) >>> numpy.tile([0,0],(1,1))#在列方向上重复[0,0]1次,行1次 array([[0, 0]]) >>> numpy.tile([0,0],(2,1))#在列方向上重复[0,0]1次,行2次 array([[0, 0], [0, 0]]) >>> numpy.tile([0,0],(3,1)) array([[0, 0], [0, 0], [0, 0]]) >>> numpy.tile([0,0],(1,3))#在列方向上重复[0,0]3次,行1次 array([[0, 0, 0, 0, 0, 0]]) >>> numpy.tile([0,0],(2,3))<span style="font-family: Arial, Helvetica, sans-serif;">#在列方向上重复[0,0]3次,行2次</span> array([[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]])
觋祉的其他笔记 · · · · · · ( 全部193条 )
- 玄隐遗密
- 3
- 推拿按摩的解剖学基础(第4版)
- 2
- 人间是剧场
- 1
- 墨子
- 1
- 日日是好日:茶道带来的十五种幸福
- 2
- 中药亲试记
- 57
- 重廣補校《黃帝內經素問》
- 3
- 小学生如何写好作文/梁晓声的写作课
- 1
- BPF之巅
- 1
- 凤囚凰(全3册)
- 2
- 渊海子平
- 2
- 软件测试
- 1
- 魔女宅急便4
- 1
- Vim实用技巧
- 2
- 认知天性
- 2
- 四圣心源
- 1
- 写给孩子的哲学启蒙书(共6册)
- 1
- 加密与解密(第二版)
- 10
- 屡试屡效方-张锡纯医学从书之一-《医学衷中参西录》前三期合编
- 1
- 中医论说集-张锡纯医学全书之三-《医学衷中参西录》第五期
- 1
- 古琴实用教程
- 1
- 五行大义
- 18
- 如何阅读一本书
- 1
- 濒湖脉学
- 1
- Wireshark网络分析就这么简单
- 1
- 性能之巅
- 34
- 《类经图翼 附:类经附翼》
- 1
- 四化滴天髓
- 7
- 星曜鐵關刀
- 1
- Arduino技术内幕
- 2
- 辅行诀五藏用药法要传承集
- 5
- 养性延命录 摄生消息论
- 1
- 刻意练习
- 1
- 读素问钞
- 1
- 单元测试之道Java版
- 14
- Dive Into Python
- 1
- 论自由
- 1
- 心理和脑与生活
- 1