基于多参数的深度学习房价预测模型准确率始终为0的技术求助
房价预测模型准确率为0的问题修复方案
核心问题:任务类型完全错配
房价预测是连续值回归任务,但你的模型配置完全是针对二分类任务的:
- 输出层用
sigmoid激活(仅适用于0/1二分类场景) - 损失函数选
binary_crossentropy(二分类专用损失函数) - 用
accuracy(分类任务指标)评估回归结果,两者完全不匹配,这是准确率始终为0的直接原因。
具体修复步骤
1. 调整模型结构与训练配置
将模型修改为适配回归任务的版本:
import tensorflow as tf model = tf.keras.models.Sequential() model.add(tf.keras.layers.Dense(units=6, activation='relu')) model.add(tf.keras.layers.Dense(units=6, activation='relu')) # 回归任务输出层无需激活(默认linear激活,适配连续值输出) model.add(tf.keras.layers.Dense(units=1)) # 回归任务用均方误差(MSE)作为损失,评估用平均绝对误差(MAE)等回归指标 model.compile(optimizer='adam', loss='mean_squared_error', metrics=['mean_absolute_error']) model.fit(X_train, y_train, batch_size=32, epochs=100)
2. 替换评估逻辑
回归任务不能使用accuracy_score,换成回归专用的评估指标:
from sklearn.metrics import mean_squared_error, mean_absolute_error # 生成测试集预测结果 y_pred = model.predict(X_test) # 计算回归任务指标 mse = mean_squared_error(y_test, y_pred) mae = mean_absolute_error(y_test, y_pred) print(f"测试集均方误差: {mse}, 平均绝对误差: {mae}")
3. 额外优化建议
- 校验目标变量:确认
y_train和y_test是连续的房价数值,而非误处理为0/1的分类标签 - 特征缩放:深度学习模型对特征尺度敏感,用
StandardScaler或MinMaxScaler对面积、房龄等连续特征做标准化/归一化处理 - 数据集检查:确保训练集与测试集分布一致,避免数据泄露(比如预处理时不能用测试集数据拟合缩放器)
内容的提问来源于stack exchange,提问作者Krystian
相关产品推荐
相关产品推荐

