BP神经网络和波士顿房价
时间: 2023-12-19 15:30:23 浏览: 95
BP神经网络是一种常见的人工神经网络,用于监督学习。它可以用于分类和回归问题,并且在许多领域中都有广泛的应用。波士顿房价数据集是一个经典的回归问题,用于预测波士顿地区房屋价格的中位数。下面是一个使用BP神经网络实现波士顿房价预测的例子:
1. 数据准备和预处理
```python
import pandas as pd
from sklearn.datasets import load_boston
from sklearn.preprocessing import StandardScaler
# 加载数据集
boston = load_boston()
# 转换为DataFrame格式
df = pd.DataFrame(boston.data, columns=boston.feature_names)
# 添加目标变量MEDV
df['MEDV'] = boston.target
# 数据标准化
scaler = StandardScaler()
df_scaled = scaler.fit_transform(df)
```
2. 构建BP神经网络模型
```python
import tensorflow as tf
# 定义输入和输出
X = tf.placeholder(tf.float32, [None, 13])
y = tf.placeholder(tf.float32, [None, 1])
# 定义模型参数
W = tf.Variable(tf.zeros([13, 1]))
b = tf.Variable(tf.zeros([1]))
# 定义前向传播
y_pred = tf.matmul(X, W) + b
# 定义损失函数
loss = tf.reduce_mean(tf.square(y - y_pred))
# 定义反向传播算法
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(loss)
```
3. 训练模型并预测
```python
import numpy as np
# 划分训练集和测试集
train_size = int(len(df_scaled) * 0.7)
train_data = df_scaled[:train_size]
test_data = df_scaled[train_size:]
# 训练模型
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for i in range(1000):
sess.run(train_step, feed_dict={X: train_data[:, :-1], y: train_data[:, -1].reshape(-1, 1)})
# 预测
y_pred = sess.run(y_pred, feed_dict={X: test_data[:, :-1]})
y_true = test_data[:, -1]
# 计算均方误差
mse = np.mean(np.square(y_true - y_pred))
print("均方误差:", mse)
```
阅读全文