因为使用的Python3的缘故,所以使用《机器学习实战》里面的代码总是遇到各种问题,这次是第9章程序清单9-2回归树切分函数里的一行:
for splitVal in set(dataSet[:,featIndex]):
即matrix类型不能被hash。
把代码改为如下即可:
for splitVal in set((dataSet[:,featIndex].T.A.tolist())[0]):
Python3下map函数的显示问题
举一个简单的例子,下面这个例子在Python2.7下是可以正常显示的:
ls = [1,2,3]
rs = map(str, ls)
#打印结果
['1', '2', '3']
lt = [1, 2, 3, 4, 5, 6]
def add(num):
return num + 1
rs = map(add, lt)
print rs
#[2,3,4,5,6,7]
但是在py3 下输入:
ls=[1,2,3]
rs=map(str,ls)
print(rs)
显示的却是:
<map at 0x3fed1d0>
而不是我们想要的结果,这也是Python3下发生的一些新的变化,如果我们想得到需要的结果需要这样写:
ls=[1,2,3]
rs=map(str,ls)
print(list(rs))