这一章的拓展练习感觉是比较简单的。基本上没有太多让人纠结的地方。没有特征提取和数据规约,让事情简单了不少。当然不包括写出C4.5的决策树,我也没有那么写。
读取数据,划分训练集和测试集,不用多说。
-
虽然题目要求的使用决策树,不过我依然使用了SVC做了一次。很巧合的是,同样也是要把train放大,我这里放大了30倍,但好像这不是我测试中效果最好的一次,不过就这一把,有兴趣各位可以再试。结果如下:
这是训练集:这是测试集:
大概看看,感觉效果不是特别好,不过我也有做到过效果很好的结果。
3.决策树方法
由于题目要求的是c4.5算法,但是sklearn并没有c4.5的信息增益率的算法,所以我做了另外两个,也就是对应的ID3算法和CART算法的结果。如果有可以使用c4.5算法的办法,请告知我。
先看ID3算法的结果。
训练集(和上面SVC采用的是相同的训练集和测试集):
测试集:
可视化结果:
再看一下CART算法的结果:
训练集:
测试集:
决策树可视化:
结论:
由此看出决策树在分类过程中,虽然过程不同,但结果相似。
而我多次的试验中发现,ID3和CART两个算法下,结果也不是绝对相同的,也出现过分类结果不同的情况。请加以注意。
而SVC和决策树算法相比,效果就差了不少。当然,我这里给出的结果中,决策树法好像训练集是全部正确的结果,但这只是偶然结果,多数时候并不会全部正确。但总体而言,正确率是高于SVC的。
而SVC影响正确率有一个关键就是数据值的放大倍数,合适的放大倍数会使得结果的准确率提高很多。