Python 多元线性回归:正则化项详解及代码示例
多元线性回归是一种用于建立多个自变量和一个因变量之间关系的回归分析方法。在 Python 中,可以使用 scikit-learn 库中的 LinearRegression 类来实现多元线性回归。同时,为了避免过拟合,我们可以在模型中加入正则化项,例如 L1 正则化和 L2 正则化。
以下是一个使用 scikit-learn 库实现多元线性回归和正则化的示例代码:
from sklearn.linear_model import LinearRegression, Lasso, Ridge
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
import numpy as np
# 生成数据集
np.random.seed(0)
X = np.random.rand(100, 5)
y = X.dot([1, 2, 3, 4, 5]) + np.random.randn(100)*0.1
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# 多元线性回归模型
lr_model = LinearRegression()
lr_model.fit(X_train, y_train)
# 输出模型结果
print('多元线性回归模型系数:', lr_model.coef_)
print('多元线性回归模型截距:', lr_model.intercept_)
print('多元线性回归模型在测试集上的均方误差:', mean_squared_error(y_test, lr_model.predict(X_test)))
# L1 正则化模型(Lasso)
lasso_model = Lasso(alpha=0.1)
lasso_model.fit(X_train, y_train)
# 输出模型结果
print('L1 正则化模型系数:', lasso_model.coef_)
print('L1 正则化模型截距:', lasso_model.intercept_)
print('L1 正则化模型在测试集上的均方误差:', mean_squared_error(y_test, lasso_model.predict(X_test)))
# L2 正则化模型(Ridge)
ridge_model = Ridge(alpha=0.1)
ridge_model.fit(X_train, y_train)
# 输出模型结果
print('L2 正则化模型系数:', ridge_model.coef_)
print('L2 正则化模型截距:', ridge_model.intercept_)
print('L2 正则化模型在测试集上的均方误差:', mean_squared_error(y_test, ridge_model.predict(X_test)))
在上述代码中,首先我们生成了一个5个自变量和1个因变量的数据集。然后,我们将数据集分为训练集和测试集,并使用 LinearRegression、Lasso 和 Ridge 三种模型进行拟合,并输出模型系数、截距和在测试集上的均方误差。其中,L1 正则化模型使用的是 Lasso,L2 正则化模型使用的是 Ridge。在模型中,我们加入了正则化项,其参数 alpha 的值为 0.1。
原文地址: https://www.cveoy.top/t/topic/nzc8 著作权归作者所有。请勿转载和采集!