重点放最前面:检查函数名是否和变量名重复,或者被重新定义了。
我自己定义的一个函数如下。
def rmspe(y, yhat):
return np.sqrt(np.mean((yhat/y-1) ** 2))
然后我在运用它检测预测值和真实值的误差时发现,针对这一行出现了如下报错:
error = rmspe(np.expm1(Y_test), np.expm1(yhat))
TypeError: ‘numpy.float64’ object is not callable
而且这行之前明明没问题的。仔细检查这行前面的代码,发现我前面把rmspe重新定义成一个变量
rmspe = rmspe(np.expm1(Y_test), np.expm1(yhat))
当时这一行还可以调用到函数rmspe(),但之后rmspe就成了一个变量而非函数了。把rmspe改成别的名字即可。