【机器学习sklearn实战】岭回归、Lasso回归和弹性网络

一 sklean中模型详解

1.1 Ride regression

1.2 Lasso regression

1.3 ElasticNet

二 算法实战

2.1 导入包

python 复制代码
import numpy as np
import pandas as pd
from sklearn import datasets
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.linear_model import Ridge, Lasso, ElasticNet
from sklearn.metrics import mean_squared_error, r2_score

2.2 加载数据集

python 复制代码
# # 加载糖尿病数据集
X, y = datasets.load_diabetes(return_X_y=True)

2.3 划分训练集和测试集

python 复制代码
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

2.4 定义模型

python 复制代码
# 定义岭回归模型
ridge = Ridge()

# 定义LASSO回归模型
lasso = Lasso()

# 定义弹性网络模型
elastic_net = ElasticNet()

2.5 设置网格参数

python 复制代码
# 设置参数网格
param_grid_ridge = {'alpha': np.logspace(-4, 4, 50)}
param_grid_lasso = {'alpha': np.logspace(-4, 4, 50)}
param_grid_elastic_net = {'alpha': np.logspace(-4, 4, 50), 'l1_ratio': np.linspace(0, 1, 10)}

2.6 创建GridSearchCV对象

python 复制代码
# 创建GridSearchCV对象
grid_ridge = GridSearchCV(ridge, param_grid_ridge, cv=5, scoring='neg_mean_squared_error')
grid_lasso = GridSearchCV(lasso, param_grid_lasso, cv=5, scoring='neg_mean_squared_error')
grid_elastic_net = GridSearchCV(elastic_net, param_grid_elastic_net, cv=5, scoring='neg_mean_squared_error')

2.7 模型训练

python 复制代码
# 训练模型
grid_ridge.fit(X_train, y_train)
grid_lasso.fit(X_train, y_train)
grid_elastic_net.fit(X_train, y_train)

2.8 获取最优参数

python 复制代码
# 获取最优参数
best_params_ridge = grid_ridge.best_params_
best_params_lasso = grid_lasso.best_params_
best_params_elastic_net = grid_elastic_net.best_params_

# 输出最优参数
print("Best parameters for Ridge:", best_params_ridge)
print("Best parameters for LASSO:", best_params_lasso)
print("Best parameters for Elastic Net:", best_params_elastic_net)

2.9 模型预测

python 复制代码
# 使用最佳模型进行预测
best_model_ridge = grid_ridge.best_estimator_
best_model_lasso = grid_lasso.best_estimator_
best_model_elastic_net = grid_elastic_net.best_estimator_

y_pred_ridge = best_model_ridge.predict(X_test)
y_pred_lasso = best_model_lasso.predict(X_test)
y_pred_elastic_net = best_model_elastic_net.predict(X_test)

2.10 模型评估

python 复制代码
# 评估模型
mse_ridge = mean_squared_error(y_test, y_pred_ridge)
r2_ridge = r2_score(y_test, y_pred_ridge)

mse_lasso = mean_squared_error(y_test, y_pred_lasso)
r2_lasso = r2_score(y_test, y_pred_lasso)

mse_elastic_net = mean_squared_error(y_test, y_pred_elastic_net)
r2_elastic_net = r2_score(y_test, y_pred_elastic_net)

# 输出结果
print("Ridge Regression:")
print(f"Mean Squared Error: {mse_ridge:.2f}")
print(f"R^2 Score: {r2_ridge:.2f}")

print("\nLASSO Regression:")
print(f"Mean Squared Error: {mse_lasso:.2f}")
print(f"R^2 Score: {r2_lasso:.2f}")

print("\nElastic Net Regression:")
print(f"Mean Squared Error: {mse_elastic_net:.2f}")
print(f"R^2 Score: {r2_elastic_net:.2f}")
相关推荐
热爱生活的猴子4 分钟前
什么情况是训练好验证差,什么情况判定为收敛慢,什么情况下判定为震荡,什么情况下说明是泛化差
人工智能·深度学习·机器学习
Ujimatsu1 小时前
数据分析相关面试题-A/B 测试 & 统计学部分
算法·机器学习·数据分析
FPGA-ADDA1 小时前
第五篇(下):智能无线电与6G候选技术——从机器学习到通感一体化
人工智能·机器学习·信号处理·fpga·通信系统
程序媛徐师姐1 小时前
Python基于机器学习的就业岗位推荐系统【附源码、文档说明】
python·机器学习·python机器学习·就业岗位推荐系统·python就业岗位推荐系统·python机器学习就业推荐·就业岗位推荐
Omics Pro1 小时前
空间组学下一代机器学习与深度学习
大数据·人工智能·深度学习·算法·机器学习·语言模型·自然语言处理
码农三叔2 小时前
(1-2)控制系统基础与人形机器人特点:人形机器人控制的特殊挑战
人工智能·机器学习·机器人·人形机器人
AI猫站长4 小时前
工信部发布具身智能首份强制标准:静态定位误差≤0.1°、动态响应≤50ms、多模态任务成功率≥85%
大数据·人工智能·机器学习·具身智能·灵心巧手
Learn Beyond Limits4 小时前
RNN的多样化用途|The diverse applications of RNN
人工智能·深度学习·神经网络·机器学习·ai·语言模型·自然语言处理
junior_Xin4 小时前
机器学习深度学习beginning4
深度学习·机器学习
codeの诱惑5 小时前
推荐算法(二):核心概念——余弦定理 & 余弦相似度
算法·机器学习·推荐算法