最近在看这本书,发现书中有些错误还是会对新手产生比较郁闷的影响的,也许是因为书中的代码比较老,要不就是官方网站更新了数据格式,无论哪种情况,这里就不做猜测了,我们先将数据提出来:
1 1 1 1 1 3 2 1 1 1 2 2 3 1 1 2 1 3 4 1 1 2 2 1 5 1 2 1 1 3 6 1 2 1 2 2 7 1 2 2 1 3 8 1 2 2 2 1 9 2 1 1 1 3 10 2 1 1 2 2 11 2 1 2 1 3 12 2 1 2 2 1 13 2 2 1 1 3 14 2 2 1 2 2 15 2 2 2 1 3 16 2 2 2 2 3 17 3 1 1 1 3 18 3 1 1 2 3 19 3 1 2 1 3 20 3 1 2 2 1 21 3 2 1 1 3 22 3 2 1 2 2 23 3 2 2 1 3 24 3 2 2 2 3
上面是官网给出的数据,网址是:
http://archive.ics.uci.edu/ml/machine-learning-databases/lenses/lenses.data;无法打开连接的童鞋可以使用我给出的数据做实验不影响实验的结果,不过这里提示仔细提示下大家代码错误的位置:
import trees
import treeShow
fr = open('kk.txt')
lenses = [inst.strip().split()[1:6] for inst in fr.readlines()]
print(lenses)
lensesLabels = ['age', 'prescript', 'astigmatic', 'tearRate']
lensesTree = trees.createTree(lenses, lensesLabels)
print (lensesTree)
treeShow.createPlot(lensesTree)
错误位置我用红色的标记给大家标记出来,这样程序就运行出类似书中图片的结果,当然有些英文单词还是数字,这个就是将数据和英文对应的一个过程了,相信大家可以自己完成。本来不想写这篇文章的,主要是由于书中错误让我感到很诧异,于是决定为他纠正一下。同样的附上截图:
大家一定对我使用的编辑器感到很好奇,推荐给大家eric5,很好用的python编辑器以及调试IDE。本来不该有这篇文章的,但是由于不忍心,看着那么多像我一样的初学者有那么多的疑惑,所以决定写出来。最后贴一个关于书中测试数据的东西: