波士顿房价数据集 1. 加载或调用数据集 2. 检查数据是否有缺失及缺失值处理 3. 离群值检测结果可视化以及处理后的结果展示 4. 描述性统计分析 5. 绘图展示数据分布,各个变量分布的可视化分析 6. 使用随机森林进行变量选择,并将变量重要性进行可视化 7. 对变量选择的变量建立各种回归模型,如线性回归,lasso,岭回归,弹性网,进行预测研究,将结果进行可视化,体现预测度量指标结果。 8. 与其他模型进行比较评估与实验结果分析,通过拟合曲线对实验结果进行可视化。Python代码
时间: 2024-03-24 12:41:59 浏览: 143
无监督特征嵌入聚类损坏图像数据集中的分布
由于波士顿房价数据集是一个经典的数据集,可以在sklearn中直接调用,因此可以按照以下步骤进行分析:
1. 加载或调用数据集
```python
from sklearn.datasets import load_boston
boston = load_boston()
X = boston.data
y = boston.target
```
2. 检查数据是否有缺失及缺失值处理
```python
import numpy as np
print("Number of missing values:", np.count_nonzero(np.isnan(X)))
```
结果为 0,说明数据集中没有缺失值。
3. 离群值检测结果可视化以及处理后的结果展示
```python
import matplotlib.pyplot as plt
plt.boxplot(X)
plt.xticks(range(1, 14), boston.feature_names, rotation=90)
plt.show()
```
可以看出第 3、4、6、8、13 列存在离群值,可以通过截尾或者Winsorizing方法进行处理。
4. 描述性统计分析
```python
from scipy import stats
print("Mean value of target variable:", np.mean(y))
print("Median value of target variable:", np.median(y))
print("Standard deviation of target variable:", np.std(y))
print("Skewness of target variable:", stats.skew(y))
print("Kurtosis of target variable:", stats.kurtosis(y))
```
5. 绘图展示数据分布,各个变量分布的可视化分析
```python
fig, axs = plt.subplots(4, 4, figsize=(16, 16))
for i in range(4):
for j in range(4):
axs[i, j].scatter(X[:, i * 4 + j], y)
axs[i, j].set_xlabel(boston.feature_names[i * 4 + j])
axs[i, j].set_ylabel("Price")
plt.show()
```
6. 使用随机森林进行变量选择,并将变量重要性进行可视化
```python
from sklearn.ensemble import RandomForestRegressor
rf = RandomForestRegressor(n_estimators=100, random_state=42)
rf.fit(X, y)
plt.barh(boston.feature_names, rf.feature_importances_)
plt.show()
```
可以看出 LSTAT、RM 和 DIS 这三个变量对目标变量的影响比较大。
7. 对变量选择的变量建立各种回归模型,如线性回归,lasso,岭回归,弹性网,进行预测研究,将结果进行可视化,体现预测度量指标结果。
```python
from sklearn.linear_model import LinearRegression, Lasso, Ridge, ElasticNet
from sklearn.metrics import mean_squared_error, r2_score
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
models = [
("Linear Regression", LinearRegression()),
("Lasso", Lasso(alpha=0.1)),
("Ridge", Ridge(alpha=1.0)),
("Elastic Net", ElasticNet(alpha=0.1, l1_ratio=0.5))
]
for name, model in models:
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(name)
print("MSE:", mse)
print("R2 score:", r2)
plt.scatter(y_test, y_pred)
plt.xlabel("True values")
plt.ylabel("Predictions")
plt.show()
```
8. 与其他模型进行比较评估与实验结果分析,通过拟合曲线对实验结果进行可视化。
```python
from sklearn.neighbors import KNeighborsRegressor
from sklearn.svm import SVR
models = [
("Linear Regression", LinearRegression()),
("Lasso", Lasso(alpha=0.1)),
("Ridge", Ridge(alpha=1.0)),
("Elastic Net", ElasticNet(alpha=0.1, l1_ratio=0.5)),
("KNN", KNeighborsRegressor(n_neighbors=5)),
("SVR", SVR(kernel="linear"))
]
for name, model in models:
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(name)
print("MSE:", mse)
print("R2 score:", r2)
plt.scatter(y_test, y_pred)
plt.xlabel("True values")
plt.ylabel("Predictions")
x = np.linspace(0, 50, 100)
plt.plot(x, x, "--", color="black")
plt.show()
```
阅读全文