参数为PTRATIO,RAD,ZN写一个波士顿房价预测神经网络python代码并将数据可视化
时间: 2024-05-08 13:21:19 浏览: 247
以下是一个简单的波士顿房价预测神经网络的Python代码,使用PTRATIO、RAD和ZN作为输入特征:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_boston
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from keras.models import Sequential
from keras.layers import Dense
# 加载波士顿房价数据集
boston = load_boston()
# 将数据集转化为DataFrame格式
df = pd.DataFrame(boston.data, columns=boston.feature_names)
df['PRICE'] = boston.target
# 选择特征
X = df[['PTRATIO', 'RAD', 'ZN']].values
y = df['PRICE'].values
# 数据标准化
scaler = StandardScaler()
X = scaler.fit_transform(X)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 定义神经网络模型
model = Sequential()
model.add(Dense(10, input_dim=3, activation='relu'))
model.add(Dense(10, activation='relu'))
model.add(Dense(1, activation='linear'))
# 编译模型
model.compile(loss='mse', optimizer='adam')
# 训练模型
history = model.fit(X_train, y_train, validation_split=0.2, epochs=50, batch_size=32)
# 可视化训练集和验证集上的损失
plt.plot(history.history['loss'], label='train')
plt.plot(history.history['val_loss'], label='validation')
plt.legend()
plt.show()
# 在测试集上进行预测
y_pred = model.predict(X_test)
# 可视化预测结果
plt.scatter(y_test, y_pred)
plt.plot([0, 50], [0, 50], '--k')
plt.xlabel('True Price')
plt.ylabel('Predicted Price')
plt.show()
```
解释一下代码的主要部分:
- 加载波士顿房价数据集,并将其转化为DataFrame格式。
- 选择PTRATIO、RAD和ZN作为输入特征,将它们保存在X中,将房价保存在y中。
- 对输入特征进行标准化。
- 划分训练集和测试集。
- 定义一个具有两个隐藏层的神经网络模型,其中每个隐藏层都有10个节点。
- 编译模型,并使用训练集进行训练。
- 可视化训练集和验证集上的损失,以验证模型是否过拟合或欠拟合。
- 在测试集上进行预测,并将预测结果可视化。
注意:这只是一个简单的实现,还有很多方法可以进一步优化模型的性能。
阅读全文