在做AndrewNG机器学习的课后题6时,使用guassian kernel的时候出现了错误IndexError: tuple index out of range
在stackoverflow中看到了同样的问题,尝试之后仍然不对。
查到一个有说,x只是一个一维数组,调用x.shape[1]时会报这个错误,自己测试了一下,确实是这样。但是我的写的guassian kernel会事先将其转换成列向量。而且!我前面选linear kernel时,fit是没有问题的,我还专门输出了一下当时的数据shape,[53,2],使用guassian kernel时数据是[1...,2], 应该不是纬度不匹配的问题吧,我猜测是自己写的callback有问题。代码如下guassianKernel
# 高斯核函数计算
def GuassianKernel(x, l,sigma=2):
x = x.reshape((-1,1))
l = l.reshape((-1,1))
fz = x - l
fz = np.sum(np.power(fz,2))
fm = 2 * sigma * sigma
return np.array([np.exp(-1 * fz / fm)])
经过测试之后,该函数数值计算结果是正确的
错误代码段
根据你提供的代码和错误信息,这个问题可能的原因是: