You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keras回归模型训练时出现'numpy.float64 object is not callable'错误求助

问题原因与解决方法

问题原因

你代码里犯了变量名与函数名重名的错误。第一次循环执行mean_squared_error = mean_squared_error(y_test,y_pred)时,原本作为函数的mean_squared_error被赋值成了计算出的MSE数值(numpy.float64类型)。第二次循环再调用mean_squared_error(y_test,y_pred)时,这个名字已经指向一个浮点数而非函数,因此抛出“不可调用”的类型错误。

解决方法

方法一:修改变量名(最简单直接)

把存储MSE结果的变量名改成和函数名不重复的名称,比如current_mse:

epochs_number = 50
mean_squared_errors = []
number_of_reapeat = 50

for i in range(0, number_of_reapeat):
    print(i)
    X_train, X_test, y_train, y_test = train_test_split(predictors, target, test_size=0.3, random_state=i)
    model.fit(X_train, y_train, epochs=epochs_number, verbose=0)
    y_pred = model.predict(X_test)
    current_mse = mean_squared_error(y_test, y_pred)
    mean_squared_errors.append(current_mse)

方法二:导入函数时使用别名

如果是从sklearn.metrics或其他库导入的mean_squared_error函数,可以给函数起一个别名,从根源避免命名冲突:

# 导入时指定别名
from sklearn.metrics import mean_squared_error as calculate_mse

epochs_number = 50
mean_squared_errors = []
number_of_reapeat = 50

for i in range(0, number_of_reapeat):
    print(i)
    X_train, X_test, y_train, y_test = train_test_split(predictors, target, test_size=0.3, random_state=i)
    model.fit(X_train, y_train, epochs=epochs_number, verbose=0)
    y_pred = model.predict(X_test)
    mean_squared_error = calculate_mse(y_test, y_pred)
    mean_squared_errors.append(mean_squared_error)

内容的提问来源于stack exchange,提问作者Ahmad Badpey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 11:20:36