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

基于Keras的ANN线性回归模型性能评估问询

关于你的ANN回归模型评估与代码正确性分析

首先来解答第一个问题:R²=0.91的模型是否属于良好模型?

这得结合你的应用场景来看:

  • 对于大多数常规回归任务(比如销售预测、工业生产参数预测),0.91的R²已经是相当不错的成绩了——它意味着模型能解释91%的输出变量方差,预测效果已经比较可靠。
  • 但如果是对精度要求极高的场景(比如精密工程模拟、高端医疗数据预测),这个分数可能还达不到要求,需要进一步优化模型。
  • 另外别忘了结合你绘制的损失/MSE曲线判断:
    • 如果训练损失和验证损失都稳定收敛,且两者差距很小,说明模型既没有过拟合也没有欠拟合,这时候0.91的R²就更有说服力;
    • 如果验证损失后期开始上升,而训练损失还在持续下降,那大概率存在过拟合问题——即使R²数值高,模型的泛化能力也会很差,得调整结构(比如加Dropout层、减少神经元数量)或者提前停止训练。

接下来分析你的代码实现是否正确:

整体逻辑是通顺的,但有几个细节需要调整或注意:

1. 缺失的依赖导入

你的代码里用到了Sequential、Dense、plt等工具,但没有导入对应的模块,直接运行会报错,需要补充:

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import matplotlib.pyplot as plt
# 如果你用的是原生Keras而非TensorFlow集成版,导入路径改为keras.models/keras.layers

2. 模型结构的合理性

你搭建的是带ReLU隐藏层的神经网络,本质上是非线性回归模型,而非严格意义上的线性回归(纯线性回归不需要隐藏层,或全用linear激活):

  • 如果你的数据本身存在非线性关系,这个结构是合适的;
  • 如果数据是纯线性的,其实可以简化结构(比如去掉隐藏层,只保留输入层+输出层,激活全用linear),效果可能更好且更高效。
  • 输入层input_dim=5对应你的5个输入特征,输出层用activation='linear'符合回归任务要求,这部分设置是正确的。

3. train_mse变量的处理

classifier.evaluate()返回的是一个包含损失值+所有metrics指标的列表,你设置了metrics=['mse','mae'],所以train_mse会是[训练集损失, 训练集MSE, 训练集MAE]。如果只想获取训练集的MSE,应该写成:

train_loss, train_mse, train_mae = classifier.evaluate(X_train, y_train, verbose=0)

否则直接用train_mse的话,拿到的是整个列表,后续做计算会出问题。

4. 其他正确的部分

  • 编译时选择loss='mse'作为损失函数、搭配adam优化器,是回归任务的标准配置,完全没问题;
  • fit()中设置validation_data=(X_test, y_test)能实时监控模型泛化能力,绘图代码正确展示了训练/验证损失的变化趋势,能帮你快速判断模型拟合状态。

总结:你的代码整体逻辑正确,补充导入语句、修正train_mse的赋值后就能正常运行;模型的好坏除了看R²,还要结合损失曲线和应用场景判断,目前0.91的R²在多数场景下已经是优秀水平。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:07:16