python岭回归sklearn
时间: 2025-04-04 21:08:51 浏览: 21
### 岐义澄清
岭回归是一种带有 L2 正则化的线性回归方法,其目标是最小化损失函数并防止过拟合。以下是基于 `sklearn` 的岭回归实现及其参数说明。
---
### 代码示例
以下是一个完整的岭回归实现案例:
```python
import numpy as np
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from sklearn.linear_model import Ridge
from sklearn.metrics import mean_squared_error, r2_score
# 创建模拟数据集
X, y = make_regression(n_samples=100, n_features=1, noise=0.1, random_state=42)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 初始化 Ridge 模型
ridge_model = Ridge(alpha=1.0) # alpha 是正则化强度超参数
# 训练模型
ridge_model.fit(X_train, y_train)
# 预测
y_pred = ridge_model.predict(X_test)
# 性能评估
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(f"均方误差 (MSE): {mse:.2f}")
print(f"决定系数 (R²): {r2:.2f}")
# 输出模型的权重和截距
print(f"模型权重: {ridge_model.coef_[0]:.2f}")
print(f"模型截距: {ridge_model.intercept_:.2f}")
```
---
### 参数说明
#### 主要参数解释:
- **alpha**: 控制正则化强度的超参数,默认值为 `1.0`。较大的 `alpha` 表示更强的正则化效果[^2]。
- **fit_intercept**: 是否计算此模型的截距项。如果设置为 `False`,则假定输入数据已经中心化。
- **normalize**: 如果设为 `True`,则在回归之前自动对特征进行缩放处理。注意,在较新的版本中该参数已被弃用,建议手动使用 `StandardScaler` 进行预处理。
- **copy_X**: 默认为 `True`,表示是否复制 X 数据。如果设为 `False`,可能会覆盖原始数据。
- **max_iter**: 使用优化器求解时的最大迭代次数。对于大多数情况,默认值即可满足需求。
- **tol**: 收敛阈值,用于判断优化过程何时停止。默认值通常足够精确。
- **solver**: 解决方案的选择方式,支持多种数值优化技术(如 `'auto'`, `'svd'`, `'cholesky'`, `'lsqr'`, `'sparse_cg'`, `'sag'`, 和 `'saga'`)。推荐使用默认选项 `'auto'` 来让程序自行选择最优策略。
---
### 结果分析
上述代码展示了如何利用 `Ridge` 类完成简单的回归任务,并提供了性能指标 MSE 和 R²。通过调整 `alpha` 超参数,可以探索不同正则化程度下的模型表现。
---
阅读全文
相关推荐


















