深入解析:Scikit-learn Python机器学习 - 回归分析算法 - Lasso 回归 (Lasso Regression)

news/2025/10/13 19:01:00/文章来源:https://www.cnblogs.com/yxysuanfa/p/19139165

锋哥原创的Scikit-learn Python机器学习视频教程:

https://www.bilibili.com/video/BV11reUzEEPH

课程介绍

本课程主要讲解基于Scikit-learn的Python机器学习知识,包括机器学习概述,特征工程(数据集,特征抽取,特征预处理,特征降维等),分类算法(K-临近算法,朴素贝叶斯算法,决策树等),回归与聚类算法(线性回归,欠拟合,逻辑回归与二分类,K-means算法)等。

Scikit-learn Python机器学习 - 回归分析算法 - Lasso 回归 (Lasso Regression)

Lasso(Least Absolute Shrinkage and Selection Operator)回归是一种线性回归的正则化方法,它通过添加 L1 正则化项(权重的绝对值之和)来进行特征选择和防止过拟合。与 Ridge 回归的 L2 正则化不同,Lasso 能够将某些特征的系数完全压缩到零,从而实现自动特征选择。

基本数学原理

Lasso回归是在普通最小二乘回归(OLS)的基础上加入了L1正则化项。其目标函数如下:

核心特点

  1. 特征选择:能够将不重要的特征系数压缩到零

  2. 稀疏解:产生稀疏的系数向量

  3. 处理多重共线性:当特征高度相关时,Lasso 通常会选择其中一个特征

与 Ridge 回归的比较

特性Lasso 回归Ridge 回归
正则化类型L1(绝对值)L2(平方)
特征选择是(产生稀疏解)否(系数接近但不等于零)
解的唯一性可能不唯一(当特征相关时)唯一
计算效率较高(尤其对于高维数据)一般
适用场景特征选择,高维数据处理多重共线性

API介绍

Lasso 类构造函数

Lasso(alpha=1.0, *, fit_intercept=True, precompute=False, copy_X=True,     max_iter=1000, tol=1e-4, warm_start=False, positive=False,     random_state=None, selection='cyclic')

核心参数:

1. alpha(正则化强度)

  • 类型: float, 默认=1.0

  • 作用: 控制 L1 正则化的强度

  • 影响:

    • α 值越大,正则化越强,更多系数被压缩到零

    • α = 0 时退化为普通线性回归

    • 通常通过交叉验证选择最佳值

2. fit_intercept(是否计算截距)

  • 类型: bool, 默认=True

  • 作用: 是否计算模型的截距项

  • 建议: 通常保持为 True

3. max_iter(最大迭代次数)

  • 类型: int, 默认=1000

  • 作用: 优化算法的最大迭代次数

  • 重要: Lasso 使用坐标下降法,可能需要较多迭代才能收敛

4. tol(收敛容忍度)

  • 类型: float, 默认=1e-4

  • 作用: 优化的停止准则,如果更新小于 tol,则停止优化

  • 调整: 更小的值意味着更高的精度但更长的计算时间

5. positive(强制正系数)

  • 类型: bool, 默认=False

  • 作用: 当设置为 True 时,强制系数为非负数

  • 应用场景: 当特征与目标变量只能有正向关系时使用

6. selection(系数更新策略)

  • 类型: str, 默认='cyclic'

  • 可选值:

    • 'cyclic': 按顺序循环更新每个系数

    • 'random': 随机更新系数,有时收敛更快

  • 建议: 对于大型数据集或当收敛较慢时尝试 'random'

7. warm_start(热启动)

  • 类型: bool, 默认=False

  • 作用: 当设置为 True 时,重用前一次调用的解作为初始化

  • 用途: 用于在不同 alpha 值下连续拟合,可以加速计算

8. random_state(随机种子)

  • 类型: int, 默认=None

  • 作用: 当 selection='random' 时,用于控制随机数生成器

  • 用途: 确保结果可重现

具体示例-加州房价预测

from sklearn.datasets import fetch_california_housing
from sklearn.linear_model import LinearRegression, SGDRegressor, Ridge, Lasso
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
​
# 加载数据
california = fetch_california_housing()
print(california.data, california.data.shape)
print(california.target)
print(california.feature_names)
​
# 2,数据预处理
X_train, X_test, y_train, y_test = train_test_split(california.data, california.target, test_size=0.2, random_state=20)
scaler = StandardScaler()  # 数据标准化:消除不同特征量纲的影响
X_train_scaled = scaler.fit_transform(X_train)  # fit计算生成模型,transform通过模型转换数据
X_test_scaled = scaler.transform(X_test)  # 使用训练集的参数转换测试集
​
# 3,创建和训练模型
la_model = Lasso()  # 创建分类器实例
la_model.fit(X_train_scaled, y_train)  # fit计算生成模型
print('权重系数:', la_model.coef_)
print('偏置值:', la_model.intercept_)
​
# 4,模型评估
y_predict = la_model.predict(X_test_scaled)
print('预测值:', y_predict)
print('真实值:', y_test)
mse = mean_squared_error(y_test, y_predict)
print('梯度下降模型均方误差:', mse)

运行结果:

[[   8.3252       41.            6.98412698 ...    2.55555556   37.88       -122.23      ][   8.3014       21.            6.23813708 ...    2.10984183   37.86       -122.22      ][   7.2574       52.            8.28813559 ...    2.80225989   37.85       -122.24      ]...[   1.7          17.            5.20554273 ...    2.3256351   39.43       -121.22      ][   1.8672       18.            5.32951289 ...    2.12320917   39.43       -121.32      ][   2.3886       16.            5.25471698 ...    2.61698113   39.37       -121.24      ]] (20640, 8)
[4.526 3.585 3.521 ... 0.923 0.847 0.894]
['MedInc', 'HouseAge', 'AveRooms', 'AveBedrms', 'Population', 'AveOccup', 'Latitude', 'Longitude']
权重系数: [ 0.  0.  0. -0. -0. -0. -0. -0.]
偏置值: 2.06782355377907
预测值: [2.06782355 2.06782355 2.06782355 ... 2.06782355 2.06782355 2.06782355]
真实值: [1.176 2.922 1.313 ... 1.029 2.795 1.293]
梯度下降模型均方误差: 1.3949525140456152

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/936345.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

讲给 SRE 听 —— 零基础入门 KNN 分类算法【左扬精讲】:SRE 运维场景实战(含余弦相似度)

讲给 SRE 听 —— 零基础入门 KNN 分类算法【左扬精讲】:SRE 运维场景实战(含余弦相似度) 一、从 SRE 日常工作理解 KNN 的核心逻辑作为 SRE,你是否经常遇到这样的场景:​某天监控告警响起,某台服务器 CPU 突然飙…

【终章】:幸福的复利——打造你的每日幸福微习惯 - 指南

【终章】:幸福的复利——打造你的每日幸福微习惯 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas…

完整教程:SQLMap注入学习靶机(打靶记录)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

实用指南:Go 语言中的**数组 (Array)*用法

实用指南:Go 语言中的**数组 (Array)*用法pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

行业词汇

理发|剪发|熟食|时尚|一元|折扣|零食|香油|蛋糕|炸鸡|营业厅|五金|鞋|衣服|服饰|广场|热水器|农合|供销社|牙|药店|日用|烤肉|大盘鸡|虾|农贸|早餐|胡辣汤|化妆品|婚庆|餐厅|餐馆|饭|饮食|酒吧|咖啡|快餐|茶餐厅|小吃|…

Java实现业务数据报表的邮件定时发送功能

Java实现业务数据报表的邮件定时发送功能Java实现业务数据报表的邮件定时发送功能 1.定义apollo的邮件收件人的邮箱地址apollo: @Value("${scooterDataReportEmailAddress}") private String scooterD…

编写Python自动化脚本,使用Autodesk Fusion辅助Ansys HFSS进行建模

前言 最近正在复现一个Vivaldi天线,需要绘制由曲线阵列的圆形构成的开槽。由于HFSS如同大便一般的建模逻辑实在不方便完成这个操作,我决定研究一下使用Autodesk Fusion进行阵列,再将坐标导入到Ansys HFSS中绘制圆柱…

单 Pod DNS 记录(`web-0.nginx.default.svc.cluster.local`)排障与启用

Kubernetes Headless Service & StatefulSet1. 现象Service 类型为 Headless(clusterIP: None) Endpoint 已列出所有 Pod IP Pod 状态 Ready 1/1 但仍无法解析 web-0.nginx.default.svc.cluster.local2. 根因 Co…

云原生周刊:KubeSphere社区版正式发布

云原生热点 KubeSphere社区版正式发布:永久免费,秒享企业级容器管理! 近日, KubeSphere 社区版正式发布,面向开发者与中小团队,永久免费、企业级体验。这一里程碑式版本让云原生技术更易获取、更高效可用。 🌟…

GauGAN详解与实现 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

网络基础17:IRF实验(H3C设备) - 指南

网络基础17:IRF实验(H3C设备) - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…

最好的感情

最好的感情: 是随意,却又彼此在意, 是惬意,却又彼此珍惜。 各自独立,而心在一起; 各自呼吸,而爱不分离。 两个人在一起,最重要的感觉就是舒服。 即使默默不语,也是一种默契; 纵然两两相望,也是一种惺惺相惜…

三剑客系列-sed命令

三剑客与正则系列 - sed 命令 1.1 概述核心功能:取行,过滤,替换修改文件内容。 难点:后向引用(截取)。 sed stream editor 流编辑器。1.2 格式命令 选项 详细格式 参数sed 选项条件动作 文件 找谁干啥1 找谁:…

超景深立体显微镜厂家Top10推荐:拓界光电引领行业新风尚

超景深立体显微镜厂家Top10推荐:拓界光电引领行业新风尚在精密制造与科研探索的广阔天地中,超景深立体显微镜以其独特的景深扩展能力和三维成像技术,成为洞察微观世界不可或缺的“智慧之眼”。本文精心筛选出超景深…

深入解析:D018 vue+django 旅游图谱推荐问答系统|neo4j数据库|智能问答

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

20232419 2025-2026-1《网络与系统攻防技术》实验一实验报告

一、实验目标及内容 实验内容:手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。注入一个自己制作的shellcode并运行…

完整教程:用deepseek部署全自动的机器人--bytebot

完整教程:用deepseek部署全自动的机器人--bytebotpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas"…

44. 开发商购买土地

44. 开发商购买土地 前缀和 思路 可能的情况有两类,A占前 i 行,B占剩余行;A占前 j 列,B占剩余列。 若直接暴力枚举,第一层 for 循环遍历行(控制行的切分),第二层、第三层 for 循环计算A区域中元素和,时间复杂…

当AI与机器人走进生活:我们即将迎来的日常变革

在当下社会快速发展的背景下,美团已经率先实现了无人机送外卖;宇树的机器狗在公司表演中展现了空翻和抗摔倒技能;具身机器人也正逐渐被 AI 驱动。我由此深切感受到,未来正在向我们走来。 首先,我想到一个巨大的短…

永久关闭docker0网络的方案

永久关闭docker0网络的方案 sudo vim /etc/systemd/system/disable-docker0.service[Unit]Description=Disable docker0 bridge at bootAfter=network.target docker.serviceWants=network.target [Service]Type=one…