岭回归(Ridge Regression)是一种用于处理共线性数据的线性回归方法,通过在损失函数中加入L2正则项来减少模型的复杂度,从而防止过拟合。在Python中,可以使用scikit-learn库来实现岭回归。
安装 scikit-learn
如果你还没有安装scikit-learn,可以通过pip安装:
pip install scikit-learn
使用岭回归
下面是一个使用岭回归的简单示例:
from sklearn.linear_model import Ridge
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_boston
import numpy as np
# 加载数据集
data = load_boston()
X = data.data
y = data.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建岭回归模型实例,设置alpha(正则化强度)
ridge = Ridge(alpha=1.0)
# 拟合模型
ridge.fit(X_train, y_train)
# 预测测试集
y_pred = ridge.predict(X_test)
# 计算R^2分数(决定系数)
score = ridge.score(X_test, y_test)
print(f"R^2 score: {score}")
train_test_split:用于将数据集分割为训练集和测试集。
Ridge:岭回归模型。
score:计算模型在测试集上的R^2分数,用于评估模型性能。R^2分数越高,表示模型性能越好。
交叉验证选择最佳alpha值:
为了找到最佳的alpha值,可以使用GridSearchCV进行交叉验证:
from sklearn.model_selection import GridSearchCV
# 定义参数网格
param_grid = {'alpha': [0.1, 1.0, 10.0, 100.0]}
# 创建GridSearchCV对象
grid = GridSearchCV(Ridge(), param_grid, cv=5) # cv=5 表示5折交叉验证
grid.fit(X_train, y_train)
# 输出最佳参数和得分
print(f"Best alpha: {grid.best_params_['alpha']}")
print(f"Best score: {grid.best_score_}")
通过上述步骤,你可以有效地使用岭回归处理共线性问题,并通过交叉验证选择最佳的模型参数。