机器学习实战——树回归(代码错误汇总)

机器学习实战——树回归(代码错误汇总)

在学习机器学习实战这本书过程中,代码实现部分往往有一些小的错误。下面进行一些总结,方便交流学习!

1.TypeError: unsupported operand type(s) for /: ‘map’ and ‘int’

报错原因:map方法和int不兼容。
解决办法:在map方法外加上一个list()如下

fltLine = list(map(float,curLine))

2.TypeError: unhashable type: ‘matrix’

报错代码

for splitVal in set(dataSet[:,featIndex]):

主要原因:dataSet是矩阵,将其转换成列表即可。
解决办法如下:用tolist方法强制转换为列表

for splitVal in set(dataSet[:,featIndex].T.tolist()[0]):

3.IndexError: index 0 is out of bounds for axis 0 with size 0

报错代码

mat0 = dataSet[np.nonzero(dataSet[:,feature] > value)[0],:][0]
mat1 = dataSet[np.nonzero(dataSet[:,feature] > value)[0],:][0]

原因:
经过逐步调试发现,其中mato和mat1都只取了切片好的的一行数据,随着迭代的进行,会超出矩阵范围出错
解决办法:将【0】去掉,取切分好的全部数据,这里极度怀疑书印刷出错了

 mat0 = dataSet[np.nonzero(dataSet[:,feature] > value)[0],:]
 mat1 = dataSet[np.nonzero(dataSet[:,feature] <= value)[0],:]

使用Tkinter创建GUI

4.AttributeError: ‘FigureCanvasTkAgg’ object has no attribute ‘show’

代码

reDraw.canvas = FigureCanvasTkAgg(reDraw.f,master=root)
reDraw.canvas.show()

报错,FigureCanvasTkAgg类中没有show方法,查看了FigureCanvasTkAgg的源代码,发现FigureCanvasTkAgg类中的show方法已经被draw方法替代了,可能是Tkinter库的版本更新了
做出如下修改即可

reDraw.canvas.draw()

5.ValueError: Masked arrays must be 1-D

报错原因:

reDraw.a.scatter(reDraw.rawDat[:,0], lreDraw.rawDat[:,1], s=5)

scatter方法画散点图,点的坐标必须是一维的,而上面代码中的坐标是两个矩阵型,可能不是以为的,将其转换成列表即可

reDraw.a.scatter(list(reDraw.rawDat[:,0]), list(reDraw.rawDat[:,1]), s=5)

你可能感兴趣的:(机器学习)