《机器学习实战》第九章“树回归”P167的程序清单9-2出现这个错误,TypeError: unhashable type: ‘matrix’。
首先在p165的测试中就出了错误,发现返回的mat1只有一行,通过调试发现
def binSplitDataSet(dataSet, feature, value):
mat0 = dataSet[nonzero(dataSet[:,feature] > value)[0],:][0]
mat1 = dataSet[nonzero(dataSet[:,feature] <= value)[0],:][0]
return mat0,mat1
这里是有错的,应该改为:
def binSplitDataSet(dataSet, feature, value):
mat0 = dataSet[nonzero(dataSet[:,feature] > value)[0],:]
mat1 = dataSet[nonzero(dataSet[:,feature] <= value)[0],:]
return mat0,mat1
对于问题TypeError: unhashable type: 'matrix’即matrix类型不能被hash,找到对应的出问题的matrix
在函数chooseBestSplit处
将
for splitVal in set(dataSet[:,featIndex]):
改为:
for splitVal in set((dataSet[:,featIndex].T.A.tolist())[0]):
即可。
转载自 https://blog.csdn.net/PIPIXIU/article/details/78127793
《机器学习实战》及随书源代码下载请到
https://download.csdn.net/download/elfffin/11252425