目录
- [Ridge 函数:](#Ridge 函数:)
- [RidgeCV 函数:](#RidgeCV 函数:)
- 实战
Ridge 和 RidgeCV 都是 scikit-learn 中用于执行岭回归的函数,但它们在使用上有一些区别。
Ridge 函数:
Ridge 函数用于创建一个岭回归模型,它需要手动指定正则化参数 alpha 的值。
一般情况下,你需要先对不同的 alpha 值进行尝试,然后选择最佳的 alpha 值来构建岭回归模型。
例如:
python
from sklearn.linear_model import Ridge
ridge = Ridge(alpha=1.0)
RidgeCV 函数:
RidgeCV 函数用于创建一个带有交叉验证的岭回归模型,它能够自动选择最佳的正则化参数 alpha 的值。
通过交叉验证的方式来选择最佳的 alpha 值,从而提高模型的泛化能力。
例如:
python
from sklearn.linear_model import RidgeCV
ridge_cv = RidgeCV(alphas=[0.1, 1.0, 10.0], cv=5)
因此,主要区别在于是否需要手动选择正则化参数 alpha。如果你想手动选择 alpha 值,可以使用 Ridge 函数;如果希望通过交叉验证自动选择最佳的 alpha 值,可以使用 RidgeCV 函数。
实战
python
import numpy as np
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
import pandas as pd
from sklearn import model_selection
from sklearn.linear_model import Ridge,RidgeCV
import matplotlib.pyplot as plt
from sklearn.metrics import mean_squared_error
# 生成示例数据
X, y = make_regression(n_samples=100, n_features=10, 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)
# 创建不同的正则化参数
alphas = np.logspace(-6, 6, 13) # 从10的-6次方到10的6次方,共13个参数
ridge_cv = RidgeCV(alphas=alphas, cv=5)
ridge_cv.fit(X_train, y_train)
# 返回最佳的lambda值
ridge_best_Lambda = ridge_cv.alpha_
print('ridge_best_Lambda:',ridge_best_Lambda)
# 基于最佳的Lambda值建模
ridge = Ridge(alpha = ridge_best_Lambda)
ridge.fit(X_train, y_train)
# 预测
ridge_predict = ridge.predict(X_test)
# 预测效果验证
RMSE = np.sqrt(mean_squared_error(y_test,ridge_predict))
print('RMSE:',RMSE)
ridge_best_Lambda: 1e-06
RMSE: 0.10132036958635314