p ython岭回归
时间: 2025-03-22 08:16:34 浏览: 37
### 岐回归(Ridge Regression)的 Python 实现
以下是基于 `scikit-learn` 库实现岐回归的一个完整示例代码。该代码涵盖了模型创建、训练、预测以及评估的过程。
#### 导入必要的库
```python
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import Ridge
from sklearn.metrics import mean_squared_error, r2_score
```
#### 数据准备与预处理
假设我们有一个简单的数据集,其中包含多个特征和目标变量。
```python
# 创建一个虚拟的数据集 (n_samples=100, n_features=5)
np.random.seed(42) # 设置随机种子以便结果可重复
X = np.random.rand(100, 5) * 100 # 特征矩阵
y = X.dot(np.array([1.5, -2.3, 0.8, -1.0, 0.5])) + np.random.randn(100) * 10 # 目标向量加噪声
# 将数据分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 对特征进行标准化处理
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
```
#### 构建并训练岐回归模型
```python
# 初始化岐回归模型,设置正则化强度 alpha=1.0
ridge_model = Ridge(alpha=1.0, fit_intercept=True, max_iter=None)
# 训练模型
ridge_model.fit(X_train_scaled, y_train)
```
#### 预测与评估
```python
# 使用测试集进行预测
y_pred = ridge_model.predict(X_test_scaled)
# 计算均方误差(MSE) 和 R²分数
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(f"Mean Squared Error: {mse:.2f}")
print(f"R² Score: {r2:.2f}")
# 打印模型系数和截距
print("Coefficients:", ridge_model.coef_)
print("Intercept:", ridge_model.intercept_)
```
上述代码实现了完整的岐回归流程,并提供了模型性能指标 MSE 和 R² 的计算[^3]。
---
#### 关于岐回归的关键点解析
1. **正则化强度 (`alpha`)**
正则化强度决定了 L2 正则项的影响程度。较大的 `alpha` 值会增加惩罚力度,使模型更加平滑,但可能导致欠拟合;较小的 `alpha` 则可能允许更高的复杂度,但也更容易过拟合[^2]。
2. **是否训练截距 (`fit_intercept`)**
默认情况下,`fit_intercept=True` 表明模型会在训练过程中自动学习一个截距项。如果已知数据已经中心化,则可以将其设为 `False` 来节省计算资源。
3. **最大迭代次数 (`max_iter`)**
如果未指定或设为 `-1`,算法将在收敛前继续迭代直到达到最优解。对于大规模数据集,可以通过设定合理的 `max_iter` 参数来控制计算时间。
---
#### 性能评估工具
在实际应用中,除了 MSE 和 R² 外,还可以考虑其他评价标准如 MAE(平均绝对误差),具体取决于业务需求和数据特性[^4]。
---
阅读全文
相关推荐











