跟着machine learn in action在重复造KNN轮子。有用sklearn实现KNN,还是人家的轮子好用。
还学了:
- numpy的矩阵用法http://mp.weixin.qq.com/s/FVI3zEp4it-fd99-3MU9vA
- Readlines, read, realine等等区别,
- 懂原理和写轮子还是很不一样的,工程能力弱鸡一个
- sklearn划分sklearn.model_selection.train_test_split和sklearn.cross_validation模块
- 一个完整过程:normalize数据,划分数据集,train,test accuracy(没用ROC因为其仅用于二分方法),K-fold cross validation,
KNN优缺点:
优点
简单好用,容易理解,精度高,理论成熟,既可以用来做分类也可以用来做回归;
可用于数值型数据和离散型数据;
训练时间复杂度为O(n);无数据输入假定;
对异常值不敏感。
缺点:
计算复杂性高;空间复杂性高;
样本不平衡问题(即有些类别的样本数量很多,而其它样本的数量很少);
一般数值很大的时候不用这个,计算量太大。但是单个样本又不能太少,否则容易发生误分。
最大的缺点是无法给出数据的内在含义。
和油管上面周莫烦联系tensorflow,为课程project准备。https://morvanzhou.github.io/
致谢:
http://blog.csdn.net/scut_arucee/article/details/50070765
http://blog.csdn.net/SCUT_Arucee/article/details/50261739
http://blog.csdn.net/Quincuntial/article/details/71104611
http://blog.csdn.net/u013710265/article/details/72722856