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

使用Keras训练房价预测模型时准确率始终为0的问题求助

Keras房价预测模型准确率始终为0的问题解决

核心问题:用错了评估指标

房价预测是回归任务——要预测的是连续的房价数值,但你用了accuracy(准确率)这个分类任务的指标。分类任务里准确率是看预测类别和真实类别对不对得上,可回归任务里模型预测的房价是连续值,几乎不可能和真实房价完全相等,所以准确率必然是0,这个指标对回归任务完全没用。

其他影响模型训练的问题及修复

  • 特征没做归一化:你的特征数值跨度极大,比如sqft_lot可能是几千,lat是几十,这种差异会让模型很难学,导致损失值居高不下。必须用标准化或归一化把所有特征缩到相近的范围里。
  • 模型没学到东西:从训练日志看损失值根本没下降,除了归一化,还可以调整训练参数(比如batch size、训练轮数)或者微调模型结构。

修改后的可运行代码

import keras
import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split

from google.colab import files
uploaded = files.upload()

import io
dataset = pd.read_csv(io.BytesIO(uploaded['kc_house_data.csv']))

# 拆分特征和标签
features = dataset.drop(columns=['price', 'id', 'date'])
labels = dataset[['price']]

# 特征标准化处理
scaler = StandardScaler()
features_scaled = scaler.fit_transform(features)

# 划分训练集和测试集,方便验证模型效果
X_train, X_test, y_train, y_test = train_test_split(features_scaled, labels, test_size=0.2, random_state=42)

# 搭建模型(结构不变,后续可根据效果调整)
model = keras.models.Sequential([
         keras.layers.Dense(19, 'relu', input_shape=(18,)),
         keras.layers.Dense(19, 'relu'),
         keras.layers.Dense(1)                     
])

# 替换为回归任务适用的评估指标,比如平均绝对误差(MAE)
model.compile(optimizer='adam', loss='mean_squared_error', metrics=['mean_absolute_error'])

# 训练模型,增加轮数并加入验证集监控
history = model.fit(X_train, y_train, epochs=50, batch_size=32, validation_split=0.1)

# 在测试集上评估模型效果
test_loss, test_mae = model.evaluate(X_test, y_test)
print(f"测试集平均绝对误差: {test_mae}")

关键修改说明

  1. 把评估指标换成mean_absolute_error(平均绝对误差),这个指标能直观反映模型预测房价和真实房价的平均差距,是回归任务的常用评估指标。
  2. 用StandardScaler对特征做标准化,让所有特征的数值范围统一,帮助模型更快收敛。
  3. 划分训练集和测试集,加入验证集,能更好地监控模型是否过拟合或欠拟合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 18:37:13