sklearn实现Ridge, LASSO, ElasticNet

B站影视 内地电影 2025-08-25 19:26 2

摘要:核心特点:使用L2正则化(权重系数的平方和)。目的:惩罚大的系数,使所有特征的特征系数都尽可能小且平均,但不会将任何系数变为零。适用场景:当数据存在多重共线性(特征间高度相关)或您希望保留所有特征时。Sklearn 关键类:sklearn.linear_mod

这三种算法都是对标准线性回归的改进,用于解决过拟合(Overfitting)问题,其核心思想都是在损失函数中引入正则化项(惩罚项)来约束模型参数。

核心特点:使用 L2正则化(权重系数的平方和)。目的:惩罚大的系数,使所有特征的特征系数都尽可能小且平均,但不会将任何系数变为零。适用场景:当数据存在多重共线性(特征间高度相关)或您希望保留所有特征时。Sklearn 关键类:sklearn.linear_model.Ridge# 导入所需的库和模块from sklearn.linear_model import Ridge, Lasso, ElasticNetfrom sklearn.model_selection import train_test_splitfrom sklearn.preprocessing import StandardScalerimport numpy as np# 假设您已有特征数据 X 和目标变量 y# X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)# 通常建议对数据进行标准化,因为正则化对系数大小敏感# scaler = StandardScaler# X_train_scaled = scaler.fit_transform(X_train)# X_test_scaled = scaler.transform(X_test)# 初始化模型ridge_model = Ridge(alpha=1.0) # alpha 是正则化强度lasso_model = Lasso(alpha=1.0)elastic_net_model = ElasticNet(alpha=1.0, l1_ratio=0.5) # l1_ratio 控制 L1 正则化的比例# 训练模型ridge_model.fit(X_train, y_train)lasso_model.fit(X_train, y_train)elastic_net_model.fit(X_train, y_train)# 进行预测和评估ridge_score = ridge_model.score(X_test, y_test)lasso_score = lasso_model.score(X_test, y_test)elastic_net_score = elastic_net_model.score(X_test, y_test)

来源:易道

相关推荐