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

ML模型训练准确率为0且损失值异常问题求助

问题分析与解决方案

嘿,我一眼就揪出了几个导致你模型拉胯的关键问题,咱们一步步来把它们解决掉:

1. 核心错误:用分类指标评估回归任务

你正在做的是房价预测(回归任务),但模型编译时却用了metrics=["accuracy"]——这可是分类任务专属的指标啊!

Accuracy衡量的是预测类别和真实类别完全匹配的比例,但回归任务预测的是连续数值(比如房价),几乎不可能和真实值完全相等,所以准确率永远是0,这个指标对你的任务半毛钱用都没有。回归任务该用回归相关指标,比如mean_absolute_error或者mean_squared_error(其实你的损失函数已经是MSE了)。

2. 学习率高到离谱,模型直接“震荡失控”

你给Adam优化器设置的lr=0.8太夸张了!Adam的默认学习率是0.001,这么大的学习率会让模型参数更新幅度过大,根本没法收敛,直接导致损失值高得吓人。

3. 模型结构太简单,拟合能力严重不足

你的模型只有一个输出神经元,连隐藏层都没有,这种结构根本没法捕捉特征和房价之间的非线性关系,拟合复杂数据的能力弱得一批。

修正后的代码

我把这些问题都修复好了,你直接抄去跑就行:

import pandas as pd
from sklearn import preprocessing
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import Adam

# 数据加载与预处理
data = pd.read_csv("house.csv")
x = data.iloc[:,0:3]
y = data["price"]
# 归一化处理
sd = preprocessing.scale(x)

# 构建有拟合能力的模型
model = Sequential()
# 添加隐藏层,用relu激活引入非线性
model.add(Dense(8, input_shape=(3,), activation='relu'))
model.add(Dense(4, activation='relu'))
# 回归任务输出层不需要激活函数(预测连续值)
model.add(Dense(1))

# 修正优化器和评估指标
model.compile(Adam(lr=0.001), loss="mean_squared_error", metrics=["mean_absolute_error"])
# 训练模型
history = model.fit(sd, y, epochs=100, verbose=1)

# 预测并保存结果
yp = model.predict(sd)
data["pred"] = yp

额外小建议

  • 先好好探索你的数据集:看看房价的分布、特征和房价的相关性,有没有异常值需要处理,这会帮你进一步提升模型效果。
  • 训练时可以加个验证集,比如model.fit(sd, y, epochs=100, validation_split=0.2),避免模型过拟合。
  • 如果损失还是降不下来,试试调整隐藏层的神经元数量、加个Dropout层,或者先换用随机森林回归这类模型做个基准对比。

内容的提问来源于stack exchange,提问作者Amr Al-Omari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 22:37:44