在Python中使用Scikit-Learn实现岭回归,评估波士顿房价预测性能,并提供代码示例。
时间: 2024-11-26 14:24:17 浏览: 61
在Python中实现岭回归以预测波士顿房价是一个典型的回归问题,可以通过Scikit-Learn库轻松完成。首先,我们需要加载波士顿房价数据集,然后创建并训练线性回归模型,接着将模型从线性回归改为岭回归,并评估模型性能。
参考资源链接:[机器学习实战:波士顿房价预测——岭回归分析](https://wenku.csdn.net/doc/6t0venxdr6?spm=1055.2569.3001.10343)
具体步骤如下:
1. 导入必要的库:
```python
from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression, Ridge
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt
```
2. 加载数据并查看数据集结构:
```python
boston = load_boston()
print(boston.data.shape)
print(boston.feature_names)
```
3. 划分数据集为训练集和测试集:
```python
X_train, X_test, y_train, y_test = train_test_split(boston.data, boston.target, test_size=0.2, random_state=42)
```
4. 创建并训练线性回归模型:
```python
lr = LinearRegression()
lr.fit(X_train, y_train)
y_pred_lr = lr.predict(X_test)
print('Linear Regression RMSE:', mean_squared_error(y_test, y_pred_lr, squared=False))
```
5. 创建并训练岭回归模型,设置不同的alpha值进行测试:
```python
alphas = [0.1, 1, 10, 100, 1000]
scores = []
for alpha in alphas:
ridge = Ridge(alpha=alpha)
ridge.fit(X_train, y_train)
y_pred_ridge = ridge.predict(X_test)
score = mean_squared_error(y_test, y_pred_ridge, squared=False)
scores.append((alpha, score))
```
6. 输出不同alpha对应的性能,并找出最佳alpha值:
```python
print('Ridge Regression RMSE for different alphas:')
for alpha, score in scores:
print('alpha = {}: RMSE = {:.3f}'.format(alpha, score))
```
7. 可视化不同alpha值的模型性能:
```python
best_alpha, best_score = min(scores, key=lambda x: x[1])
plt.plot([alpha for alpha, _ in scores], [score for _, score in scores], marker='o')
plt.xscale('log')
plt.xlabel('alpha')
plt.ylabel('RMSE')
plt.title('Ridge Regression - Alpha vs RMSE')
plt.show()
```
在上述代码中,我们首先用线性回归作为基线模型进行训练和预测,然后用岭回归模型进行同样的过程,但是在岭回归中添加了正则化参数`alpha`。通过改变`alpha`的值,我们可以找到使得模型在测试集上表现最佳的参数。最后,我们通过可视化不同`alpha`值对应的模型性能,帮助我们直观地选择最优的模型参数。
参考资源链接:[机器学习实战:波士顿房价预测——岭回归分析](https://wenku.csdn.net/doc/6t0venxdr6?spm=1055.2569.3001.10343)
阅读全文