相关博客和代码很多很多,本文主要记录 学习过程中遇到的问题 + 可供参考的链接 和 博客地址。
1. 书上用的python 2.7,我用的python 3.6,导致代码不可照搬。
作为一个python小白,只能去搜寻众网友的3.6版本代码啦。
2. source code for book
下载地址 https://github.com/EddieXin/machinelearninginaction
(这个链接是最好的,免费 + 网速快,我也fork了一下)
3. lesson 2: KNN
1) 参考 修行的猫_zq 的csdn blog,python 3.6+超级详细的注释
http://blog.youkuaiyun.com/sinat_17196995/article/details/55052174
2)记录:1.还要写def file2matrix(filename)函数啊,R中read.txt()直接搞定
2.>>>reload(kNN) 错误,pthon3.X 前一句要加上 >>>from importlib import reload
参考:https://stackoverflow.com/questions/10142764/nameerror-name-reload-is-not-defined
3. Page22的datingTestSet.txt这个文件,根据网上的源代码,应该选择datingTestSet2.txt这个文件。主要的区别是最后的标签
参考:http://blog.youkuaiyun.com/chchlh/article/details/41596797
4. lesson 3: decision tree
1)3.1节,3.3节,3.4节 构造决策树 +分类
参考: 笨鸟多学的blog,详细注释
https://www.cnblogs.com/zy230530/p/6813250.html
创建的树,用字典类型存储,
字典简介:https://www.cnblogs.com/linjiqin/p/3608541.html
2)3.2节 绘制决策树
程序3-6【重要】,递归+字典
程序3-5,3-7绘图,【不重要】
参考 修行的猫_zq 的csdn blog,python 3.6+超级详细的注释
http://blog.youkuaiyun.com/sinat_17196995/article/details/55670932
5. lesson 4: naive Bayes
1)继续参考 修行的猫_zq 的csdn blog,注释详细
http://blog.youkuaiyun.com/sinat_17196995/article/details/57412474
2)chapter 4.7,python解析RSS(feedparser)
https://www.cnblogs.com/MrLJC/p/3731213.html
6. lesson 5: Logistic Regression
1)继续参考 修行的猫_zq 的csdn blog,注释详细
http://blog.youkuaiyun.com/sinat_17196995/article/details/57418519
2) 问题:程序清单5-1,用sigmoid函数的值与1/2的关系实现分类,为何是梯度上升?怎么推导的。
答:参考 西瓜书,chapter 3.3对数几率回归,公式(3.30)给出了梯度的公式,
自己推导一遍,得到梯度下降的公式。与程序5-1更新weights一致,只不过程序5-1称之为梯度上升。
7. lesson6: SVM
1)SVM推导过程:涉及原问题和对偶问题、拉格朗日对偶性、KKT条件等,详见 李航书 SVM章节+附录C
2)SMO算法(程序6-2)
书中代码解释: http://blog.youkuaiyun.com/puqutogether/article/details/44565093
smo算法: 李航书 chapter 7.4,自己推导一遍就明白啦
8. lesson8: regression
1))涉及 标准线性回归,局部加权线性回归,岭回归,Lasso(其优化参考本人博文--Lasso回归的优化)
所有优化过程均自己推导一遍,尤其是Lasso--有多种优化方法。
2)乐高玩具数据获取部分,程序8-5
1是从网站抽取数据,如程序8-5所示。python3.X不支持urllib2(安装失败),需要安装urllib3;再import urllib.request,并把pg那行改为urllib2.request.urlopen。程序的解释参考链接 https://www.cnblogs.com/zy230530/p/6942458.html 。失败,我猜是url链接无效吧,以后再来深究。
2是直接爬取html,参考链接http://blog.youkuaiyun.com/u011629133/article/details/52296892。安装Beautifulsoup4,pip install Beautifulsoup4,然后from bs4 import BeautifulSoup检测是否安装成功。将读取文件的那行代码改为fr = open(inFile, mode='r', encoding='UTF-8')。
9. lesson7: AdaBoost + ROC曲线
1)AdaBoost
理论方面:(1)自己的博文 提升树boosting;(2)李航书chapter8,主要是算法8.1
2)非均衡分类问题
chapter7.7总结了多种非均衡分类问题的指标,主要关注ROC曲线(程序7-5)
10. lesson9: regression Tree
1)python3部分代码不同于python2,继续参考 修行的猫_zq 的csdn blog
http://blog.youkuaiyun.com/sinat_17196995/article/details/69621687
2)理论方面:参考自己的博文 决策树
书中创建的是CART树,包括 回归树(叶节点是常数),模型树(叶节点是分段回归方程)
剪枝(包括预、后)
3)GUI,以后再学
11.lesson10: k-Means
1)对聚类进行后处理以提高聚类性能:
1是合并最近的质心;2是利用SSE,合并2个使得SSE增幅最小的质心(10.2节)
2)从一个大的簇开始划分,直到达到指定簇数为止:(10.3节,程序10-3)
1是二分k-Means算法,选择能够最大程度【降低SSE的值】的簇进行划分;2是选择SSE最大的簇进行划分