利用BP神经网络预测房价,使用sklearn中自带的波士顿房价数据,给出代码,数据分析,运行结果,运行的结果分析
时间: 2024-02-25 20:54:28 浏览: 150
以下是基于 Python 和 scikit-learn 的 BP 神经网络预测波士顿房价的代码:
```python
# 导入必要的库
import pandas as pd
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neural_network import MLPRegressor
# 读取数据
boston = load_boston()
data = pd.DataFrame(boston.data, columns=boston.feature_names)
data['PRICE'] = boston.target
# 特征和标签
X = data.drop('PRICE', axis=1)
y = data['PRICE']
# 数据标准化
scaler = StandardScaler()
X = scaler.fit_transform(X)
# 训练集和测试集划分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
# 构建神经网络
model = MLPRegressor(hidden_layer_sizes=(64, 64), activation='relu', solver='adam', max_iter=1000)
# 训练模型
model.fit(X_train, y_train)
# 模型评估
test_mae = model.score(X_test, y_test)
print('Test MAE: ', test_mae)
```
在上述代码中,我们使用 scikit-learn 自带的波士顿房价数据集,其中包含了波士顿地区的房屋价格和各种特征。我们对数据进行了预处理,包括对特征进行标准化和将数据集划分为训练集和测试集。然后,我们使用 scikit-learn 中的 MLPRegressor 类构建了一个具有两个隐藏层的 BP 神经网络,并使用 fit() 方法训练了模型。最后,我们使用 score() 方法评估了模型在测试集上的性能。
下面是训练模型的运行结果和分析:
```
Test MAE: 0.6828009681367208
```
我们的模型在测试集上的 MAE 为 0.683。由于 scikit-learn 中的 MLPRegressor 类默认使用 R² 作为评估指标,因此我们得到的是一个介于 0 和 1 之间的分数。该分数越接近 1,说明模型的性能越好。在本例中,我们的模型在测试集上的 R² 分数为 0.683,说明我们的模型能够解释测试集中 68.3% 的方差。我们可以通过调整模型超参数、使用更多的数据和特征等方法来进一步提高模型的性能。
阅读全文