机器学习/深度学习模型python

问题描述 投票:0回答:2

我制作了一个深度学习模型,用于根据不同参数预测房地产价格,例如:面积、房间数量、楼层、楼层数、建筑物年龄、建筑物类型等。

我的数据集已废弃,数据已准备好进行分析(离散列作为虚拟数据)。我的模型如下面的代码所示。问题是模型的准确率始终为 0。

这是我的代码:

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'))
model.add(tf.keras.layers.Dense(units=1, activation='sigmoid'))
model.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])
model.fit(X_train, y_train, batch_size = 32, epochs = 100)

accuracy_score(y_test, y_pred)

我找不到类似案例的教程。

tensorflow deep-learning
2个回答
0
投票

预测房地产价格需要回归深度学习模型。 所以该代码中的问题是 1-在输出层中您使用“sigmoid”函数,将其更改为“线性” 2-将损失更改为平均绝对误差或均方误差 3-将指标也更改为 mae 或 mse 4-可能添加更多纪元,神经网络回归可能需要更多纪元来学习 尝试这些改变,他们应该可以解决问题


0
投票

1。输出层激活函数:

您在输出层中使用“sigmoid”激活。此激活函数通常用于二元分类问题,其中输出表示属于两个类别之一的概率。为了预测房地产价格,您不应在输出层使用 sigmoid 激活。相反,如果您想预测连续值(回归),请使用线性激活函数或根本不使用激活函数。

Python代码

model.add(tf.keras.layers.Dense(units=1, activation=None))

2。损失函数:

由于这是一个回归问题(预测房地产价格),因此您应该使用适当的损失函数进行回归,例如均方误差(MSE)或平均绝对误差(MAE)。将“binary_crossentropy”替换为“mean_squared_error”以进行回归。

Python代码

model.compile(optimizer='adam', loss='mean_squared_error')

3.评估指标:

在处理回归任务时,您应该使用平均绝对误差 (MAE)、均方误差 (MSE) 或 R 平方 (R2) 等回归指标来评估模型,而不是用于分类任务的准确性。训练后,计算并打印这些指标以评估模型在测试集上的性能。

Python代码

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("Mean Squared Error:", mse)
print("Mean Absolute Error:", mae)

4。模型复杂度:

您的神经网络的架构可能需要调整。考虑尝试不同数量的隐藏层和单元,以找到最适合您的数据集的架构。您还可以尝试添加 dropout 层以防止过度拟合。

5。数据预处理:

确保您的数据经过适当的预处理、缩放和标准化(如有必要)。不正确的数据预处理会显着影响模型性能。

6。训练数据: 确保您的模型有足够的高质量训练数据。小或嘈杂的数据集可能会导致性能不佳。

以下是如何修改代码的更新示例:

Python代码

import tensorflow as tf
from sklearn.metrics import mean_squared_error, mean_absolute_error

# Create and compile the model
model = tf.keras.models.Sequential([
    tf.keras.layers.Dense(units=6, activation='relu'),
    tf.keras.layers.Dense(units=6, activation='relu'),
    tf.keras.layers.Dense(units=1, activation=None)  # Linear activation for regression
])

model.compile(optimizer='adam', loss='mean_squared_error')

# Train the model
model.fit(X_train, y_train, batch_size=32, epochs=100)

# Evaluate the model
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
mae = mean_absolute_error(y_test, y_pred)

print("Mean Squared Error:", mse)
print("Mean Absolute Error:", mae)

通过进行这些更改,您应该走上构建预测房地产价格的回归模型的正确道路。根据需要调整模型架构和超参数以进一步提高性能。

© www.soinside.com 2019 - 2024. All rights reserved.