《机器学习实战》读书笔记 第二章 k-近邻算法

来源:互联网 发布:软件著作权保护中心 编辑:程序博客网 时间:2024/06/06 09:07
即将翻篇的2014年是我的编程元年,这一年从换工作到考研各种忙。等到一切都尘埃落定,就打算静下心来,把这一年学到的东西好好总结一下,也分享给后来人攒攒rp~相信我遇到的问题很多新手都会遇到的,如果能带给大家一点帮助,我就满足了。

《机器学习实战》是我第一本编程书。因为13年左右这本书很火的样子,又听说python很简单白痴都能看懂,于是我无视了自己在编程方面一无所知的事实,一有空就马上看起来了。
作为一个考研时毫无C语言基础直接开刷数据结构的猛士(那是后话了),吾辈一向不缺少这种大无畏的精神。
书的第一章简要介绍了机器学习的概念和方法论,读起来毫无障碍。╮(╯▽╰)╭我的小心脏稍稍放松了些
第二章开头讲了knn算法的基本思想,就是先输入若干带标签的训练样本,当输入无标签的新数据时,选择训练样本集中距离新数据最近的k个点,其中出现次数最多的标签即为新数据的标签。
好简单有木有(●´∀`)♪ 

看来编程一点也不可怕嘛~接下来就是如何实现啦
然后我就看到了这个


·°.·°∴ ☆..·°.·°∴ ☆.我是万籁俱寂的分割线.·°∴☆..·°.·°∴☆
。。。
。。。。。。




说好的读python代码就像读英文一样流畅呢!!
各种陌生的函数根本看不懂啊!!
而!且!完!全!没!有!讲!解!

继成功学和心灵鸡汤之后,本书再次定义了何为“梦幻泡影”


给我掌握节奏啊混蛋!

更气人的是,作者生怕我们看不懂其中高深的数学原理,紧接着就给出了欧氏空间两点距离公式的详细阐释

。。。
。。。。。。

·°.·°∴ ☆..·°.·°∴ ☆.我是理性龟裂的分割线.·°∴☆..·°.·°∴☆

有这功夫不如把代码里出现的函数给解释下啊【摔

你倒是找一个能看懂以上代码却不知道两点距离公式的人给我看看啊!!!


°∴ ☆..·°.·°∴ ☆..·° 我是吐完槽该干嘛还得干嘛的分割线.·°∴☆..·°.·°∴☆.
ok,现在咱们用暴力破解的方式把代码里的函数和方法理一理。
1).shape方法返回数组的列数和行数。.shape[0]返回行数,.shape[1]返回列数。

2)tile(array,(x,y))函数返回一个新数组,新数组的行=原数组的行*x(纵向复制x倍),新数组的列=原数组的列*y(横向复制y倍)

3).sum()方法返回数组各元素的和。.sum(axis=0)表示对每列的元素求和,.sum(axis=1)表示对每行的元素求和。
这其实是对数组的一种降维打击。。

4).argsort()方法返回按升序排序时数组各元素原来的索引值。


5)字典的.get(x,y)方法用于判断键x是否存在。若存在,返回x的值。若不存在,返回y。


6)字典的.iteritems()方法只适用于python2.x版本,3.x版本变为.items()方法,返回一个dict_items类型


7)operator.itemgetter(x,y,...)函数用于定义一个函数,通过该函数作用到对象上获取该对象中索引为x,y,等等的值。


8)sorted函数用于给可迭代类型(list,array,etc.)排序,返回一个排序后的可迭代类型。它有三个参数:可迭代类型;用于排序的关键字;是否逆序。
这排序结果有点微妙啊。。为毛把我精心设计的数组君拆散了

°∴ ☆..·°.·°∴ ☆..·° 我是大彻大悟的分割线.·°∴☆..·°.·°∴☆.

这样梳理一遍后,吾辈终于明白了:这样的代码(虽然不太好理解),确实比我脑袋里构思的那坨翔,要优雅多了。。。


0 0
原创粉丝点击