以波士顿房价为例,利用随机森林进行房价回归预测
时间: 2023-12-02 15:07:42 浏览: 88
好的,针对波士顿房价数据集,我们可以使用随机森林进行房价回归预测。首先,我们需要准备数据集并进行数据预处理,包括数据清洗、特征工程、数据标准化等。然后,我们可以使用随机森林模型进行训练和预测。具体步骤如下:
1. 准备数据集:从sklearn.datasets中导入波士顿房价数据集,将数据集划分为训练集和测试集。
2. 数据预处理:对数据进行清洗和特征工程处理,包括缺失值填充、特征选择、特征缩放等。
3. 训练模型:使用随机森林算法训练模型,设置超参数,例如树的数量、最大深度等。
4. 模型评估:使用测试集评估模型的性能,比较预测值和真实值之间的误差。
5. 模型调优:根据模型表现和误差,调整超参数,重新训练模型。
6. 模型应用:使用训练好的模型进行房价预测。
以上就是利用随机森林进行波士顿房价回归预测的主要步骤,具体实现可以参考sklearn库中的相关函数。
相关问题
随机森林波士顿房价回归预测
好的,您想了解有关随机森林用于波士顿房价回归预测的相关知识,是吗?那么,随机森林是一种基于决策树的集成学习算法,它通过构建多个决策树并将它们组合起来进行预测,以提高模型的准确性和稳定性。在波士顿房价回归预测中,随机森林可以利用波士顿房屋数据集中的各种特征,如房屋的面积、卧室数量、社区状况等,来预测房价。通过训练多个决策树,并利用这些树的预测结果进行综合预测,随机森林可以更准确地预测波士顿房价,并具有很好的泛化能力。
波士顿房价预测(随机森林和线性回归)
波士顿房价数据集是一个经典的机器学习数据集,其中包含了波士顿市不同地区房屋的价格及其相关特征,如犯罪率、房屋所在位置的贫困指数、房屋的平均房间数等。
在本项目中,我们将使用随机森林和线性回归两种模型来预测波士顿房价。
## 1. 数据探索
我们首先加载数据,查看数据的基本信息:
```python
import pandas as pd
import numpy as np
from sklearn.datasets import load_boston
boston = load_boston()
df = pd.DataFrame(boston.data, columns=boston.feature_names)
df['PRICE'] = boston.target
print(df.head())
print(df.describe())
```
输出结果如下:
```
CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX PTRATIO B LSTAT PRICE
0 0.00632 18.0 2.31 0.0 0.538 6.575 65.2 4.0900 1.0 296.0 15.3 396.90 4.98 24.0
1 0.02731 0.0 7.07 0.0 0.469 6.421 78.9 4.9671 2.0 242.0 17.8 396.90 9.14 21.6
2 0.02729 0.0 7.07 0.0 0.469 7.185 61.1 4.9671 2.0 242.0 17.8 392.83 4.03 34.7
3 0.03237 0.0 2.18 0.0 0.458 6.998 45.8 6.0622 3.0 222.0 18.7 394.63 2.94 33.4
4 0.06905 0.0 2.18 0.0 0.458 7.147 54.2 6.0622 3.0 222.0 18.7 396.90 5.33 36.2
CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX PTRATIO B LSTAT PRICE
count 506.000000 506.000000 506.000000 506.000000 506.000000 506.000000 506.000000 506.000000 506.000000 506.000000 506.000000 506.000000 506.000000 506.000000
mean 3.613524 11.363636 11.136779 0.069170 0.554695 6.284634 68.574901 3.795043 9.549407 408.237154 18.455534 356.674032 12.653063 22.532806
std 8.601545 23.322453 6.860353 0.253994 0.115878 0.702617 28.148861 2.105710 8.707259 168.537116 2.164946 91.294864 7.141062 9.197104
min 0.006320 0.000000 0.460000 0.000000 0.385000 3.561000 2.900000 1.129600 1.000000 187.000000 12.600000 0.320000 1.730000 5.000000
25% 0.082045 0.000000 5.190000 0.000000 0.449000 5.885500 45.025000 2.100175 4.000000 279.000000 17.400000 375.377500 6.950000 17.025000
50% 0.256510 0.000000 9.690000 0.000000 0.538000 6.208500 77.500000 3.207450 5.000000 330.000000 19.050000 391.440000 11.360000 21.200000
75% 3.677082 12.500000 18.100000 0.000000 0.624000 6.623500 94.075000 5.188425 24.000000 666.000000 20.200000 396.225000 16.955000 25.000000
max 88.976200 100.000000 27.740000 1.000000 0.871000 8.780000 100.000000 12.126500 24.000000 711.000000 22.000000 396.900000 37.970000 50.000000
```
从输出结果可以看出,数据集共有506个样本,每个样本包含13个特征和1个目标变量(即房价)。特征包括:
- CRIM:城镇人均犯罪率
- ZN:住宅用地所占比例
- INDUS:非零售商业用地所占比例
- CHAS:是否靠近查尔斯河(1表示靠近,0表示不靠近)
- NOX:一氧化氮浓度
- RM:每个住宅的平均房间数
- AGE:1940年以前建成的自住单位的比例
- DIS:距离五个波士顿就业中心的加权距离
- RAD:距离高速公路的便利指数
- TAX:每万美元的不动产税率
- PTRATIO:城镇师生比例
- B:黑人比例
- LSTAT:低收入人群比例
## 2. 数据预处理
我们需要将数据集分成训练集和测试集,其中训练集用于训练模型,测试集用于评估模型性能。我们将训练集和测试集的比例设置为7:3。
```python
from sklearn.model_selection import train_test_split
X = df.drop('PRICE', axis=1)
y = df['PRICE']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
```
我们还需要对数据进行标准化处理,以便于模型更好地学习数据集。
```python
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
```
## 3. 线性回归模型
首先,我们使用线性回归模型来预测波士顿房价。
```python
from sklearn.linear_model import LinearRegression
lr = LinearRegression()
lr.fit(X_train_scaled, y_train)
print(lr.coef_)
print(lr.intercept_)
```
输出结果如下:
```
[-0.96124802 1.04288045 0.13821887 0.65948615 -1.92937869 2.60118157 0.14167752 -3.08023279 2.54724553 -1.81543372 -2.33302112 0.85664044 -3.74868433]
22.74580335752233
```
接下来,我们使用测试集对模型进行评估。
```python
from sklearn.metrics import r2_score, mean_squared_error
y_pred = lr.predict(X_test_scaled)
r2 = r2_score(y_test, y_pred)
mse = mean_squared_error(y_test, y_pred)
rmse = np.sqrt(mse)
print('R2 score:', r2)
print('MSE:', mse)
print('RMSE:', rmse)
```
输出结果如下:
```
R2 score: 0.711226005748496
MSE: 21.517444231177425
RMSE: 4.637781108552027
```
## 4. 随机森林模型
接下来,我们使用随机森林模型来预测波士顿房价。
```python
from sklearn.ensemble import RandomForestRegressor
rf = RandomForestRegressor(n_estimators=100, random_state=42)
rf.fit(X_train_scaled, y_train)
```
接下来,我们使用测试集对模型进行评估。
```python
y_pred = rf.predict(X_test_scaled)
r2 = r2_score(y_test, y_pred)
mse = mean_squared_error(y_test, y_pred)
rmse = np.sqrt(mse)
print('R2 score:', r2)
print('MSE:', mse)
print('RMSE:', rmse)
```
输出结果如下:
```
R2 score: 0.8463672544193478
MSE: 11.153723157894741
RMSE: 3.339417217974791
```
## 5. 结论
从以上结果可以看出,使用随机森林模型预测波士顿房价的性能比线性回归模型更好,其R2得分为0.85,平均方差为11.15,平均根方差为3.34。因此,我们可以选择随机森林模型作为预测波士顿房价的模型。
阅读全文