使用波士顿数据集1. 加载或调用数据集 2. 检查数据是否有缺失及缺失值处理 3. 离群值检测及处理 4. 描述性统计分析 5. 绘图展示数据分布 6. 使用每个案例下描述的方法进行对应数据的分类或者预测研究,体现分类或预测度量指标结果。 7. 与其他模型进行比较评估与实验结果分析,通过柱形图或者拟合曲线对实验结果进行可视化。8.使用随机森林进行变量选择,建立回归预测模型,通过各因素指标来预测房价代码python
时间: 2024-03-22 21:42:07 浏览: 63
boston 房价数据集预测 多种回归方法 python 有报告
5星 · 资源好评率100%
以下是使用波士顿数据集进行数据分析的代码:
```python
# 导入必要的库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error, r2_score
# 加载数据集
boston = load_boston()
# 将数据集转换为DataFrame格式
df = pd.DataFrame(boston.data, columns=boston.feature_names)
df['target'] = boston.target
# 检查数据是否有缺失
print(df.isnull().sum())
# 离群值检测及处理
sns.boxplot(df['target'])
plt.show()
df = df[df['target'] < 50]
# 描述性统计分析
print(df.describe())
# 绘图展示数据分布
sns.pairplot(df, x_vars=boston.feature_names, y_vars='target')
plt.show()
# 分离自变量和因变量
X = df[boston.feature_names]
y = df['target']
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 线性回归模型
lr = LinearRegression()
lr.fit(X_train, y_train)
y_pred_lr = lr.predict(X_test)
mse_lr = mean_squared_error(y_test, y_pred_lr)
r2_lr = r2_score(y_test, y_pred_lr)
print('线性回归模型MSE:', mse_lr)
print('线性回归模型R2 Score:', r2_lr)
# 决策树回归模型
dt = DecisionTreeRegressor(random_state=42)
dt.fit(X_train, y_train)
y_pred_dt = dt.predict(X_test)
mse_dt = mean_squared_error(y_test, y_pred_dt)
r2_dt = r2_score(y_test, y_pred_dt)
print('决策树回归模型MSE:', mse_dt)
print('决策树回归模型R2 Score:', r2_dt)
# 随机森林回归模型
rf = RandomForestRegressor(random_state=42)
rf.fit(X_train, y_train)
y_pred_rf = rf.predict(X_test)
mse_rf = mean_squared_error(y_test, y_pred_rf)
r2_rf = r2_score(y_test, y_pred_rf)
print('随机森林回归模型MSE:', mse_rf)
print('随机森林回归模型R2 Score:', r2_rf)
# 可视化比较各模型的预测结果
models = ['Linear Regression', 'Decision Tree', 'Random Forest']
mse = [mse_lr, mse_dt, mse_rf]
r2 = [r2_lr, r2_dt, r2_rf]
df_results = pd.DataFrame({'Model': models, 'MSE': mse, 'R2 Score': r2})
df_results.plot(x='Model', y=['MSE', 'R2 Score'], kind='bar')
plt.show()
# 随机森林进行变量选择
feat_importances = pd.Series(rf.feature_importances_, index=boston.feature_names)
feat_importances.nlargest(5).plot(kind='barh')
plt.show()
# 建立随机森林回归预测模型
X_new = df[['RM', 'LSTAT', 'PTRATIO', 'TAX', 'DIS']]
y_new = df['target']
X_train_new, X_test_new, y_train_new, y_test_new = train_test_split(X_new, y_new, test_size=0.2, random_state=42)
rf_new = RandomForestRegressor(random_state=42)
rf_new.fit(X_train_new, y_train_new)
y_pred_new = rf_new.predict(X_test_new)
mse_new = mean_squared_error(y_test_new, y_pred_new)
r2_new = r2_score(y_test_new, y_pred_new)
print('新的随机森林回归模型MSE:', mse_new)
print('新的随机森林回归模型R2 Score:', r2_new)
```
注:以上代码中的可视化部分可能需要修改才能在一些环境中运行。
阅读全文