重点放最前面:检查函数名是否和变量名重复,或者被重新定义了。

我自己定义的一个函数如下。

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改成别的名字即可。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐