当前位置: 首页 > article >正文

Python机器学习sklearn线性模型完整指南:LinearRegression/Ridge/Lasso详细代码注释

机器学习sklearn模型核心API详解线性回归、岭回归、Lasso全覆盖详细代码注释scikit-learn 是 Python 机器学习最常用的库但很多初学者对各模型的参数含义一知半解。本文系统整理了 sklearn 中线性模型家族LinearRegression / Ridge / Lasso的完整 API 参数说明适合入门和进阶学习。一、sklearn 模型通用方法所有 sklearn 模型都有以下通用方法理解这些是使用任何算法的基础# 公主号船长Talk —— 每天一篇数据分析干货 # sklearn 模型通用方法示例 from sklearn.linear_model import LinearRegression import numpy as np # 准备训练数据 X np.array([[1, 2], [3, 4], [5, 6], [7, 8]]) y np.array([10, 20, 30, 40]) # 1. 实例化模型 lg LinearRegression() # 2. fit() — 训练模型 # 参数说明 # X: 训练集样本numpy arrayshape(n_samples, n_features) # y: 标签集合shape(n_samples,) # sample_weight: 每个样本的权重可选 lg.fit(X, y) # 3. predict() — 用训练好的模型预测新数据 X_new np.array([[9, 10]]) y_pred lg.predict(X_new) print(预测结果:, y_pred) # [50.] # 4. score() — 评估模型性能 # 分类模型返回 accuracy回归模型返回 R² score lg.score(X, y) print(R² 分数:, score) # 5. get_params() — 查看模型当前参数 print(模型参数:, lg.get_params(deepTrue)) # 6. set_params() — 动态修改模型参数 lg.set_params(fit_interceptFalse)二、通用参数说明以下参数在多种 sklearn 模型中通用记住一次就够了# 公主号船长Talk —— 跟船长学机器学习少走99%的弯路 # sklearn 通用参数说明不同模型均适用 # n_jobs: 并行计算使用的 CPU 核心数 # 正数 指定核心数-1 使用全部可用 CPU # 适用场景大数据集训练时设置 -1 可显著加速 # verbose: 是否打印训练过程中的日志 # 0 / None 关闭日志 # 正数越大日志越详细 # warm_start: 是否基于上次训练结果继续训练 # True 增量学习适合流式数据 # False 每次从头训练默认 # max_iter: 最大迭代次数 # None 使用算法默认值 # 设置过小可能导致不收敛 # random_state: 随机数种子 # 整数 固定随机数生成器的种子保证结果可复现 # RandomState 实例 指定随机数生成器 # None 使用默认随机数生成器不可复现 from sklearn.linear_model import LinearRegression # 实践示例完全可复现的训练过程 model LinearRegression(n_jobs-1) # 使用全部 CPU print(参数配置:, model.get_params())三、LinearRegression — 线性回归最基础的回归模型适用于特征与目标变量之间存在线性关系的场景。# 公主号船长Talk —— 数据分析师必备的机器学习知识 # LinearRegression 完整使用示例 from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split from sklearn.datasets import make_regression import numpy as np # 生成模拟数据 X, y make_regression(n_samples200, n_features5, noise0.1, random_state42) # 划分训练集和测试集 X_train, X_test, y_train, y_test train_test_split( X, y, test_size0.2, random_state42 ) # LinearRegression 参数说明 # fit_interceptTrue → 是否计算截距项偏置 b # True: 模型带截距 y wX b # False: 过原点线性模型 y wX # normalizeFalse → 是否在训练前对特征归一化新版sklearn已废弃改用StandardScaler # copy_XTrue → 是否复制 XFalse 时直接在原始数据上操作节省内存但有副作用 # n_jobs1 → 并行计算核心数-1 使用全部 CPU lr LinearRegression( fit_interceptTrue, # 一般保持 True copy_XTrue, n_jobs-1 ) # 训练 lr.fit(X_train, y_train) # 查看模型参数 print(权重向量 coef_:, lr.coef_) # 各特征的权重 w print(截距 intercept_:, lr.intercept_) # 偏置项 b # 预测 评估 y_pred lr.predict(X_test) r2_score lr.score(X_test, y_test) print(f测试集 R² 分数: {r2_score:.4f}) # 越接近 1 越好四、Ridge — 岭回归L2正则化线性回归容易过拟合岭回归通过 L2 正则化来约束权重改善泛化能力。# 公主号船长Talk —— 关注公主号每天进步一点点 # Ridge 岭回归完整示例 from sklearn.linear_model import Ridge, RidgeCV from sklearn.datasets import make_regression from sklearn.model_selection import train_test_split import numpy as np X, y make_regression(n_samples200, n_features10, noise5, random_state42) X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.2, random_state42) # Ridge 核心参数说明 # alpha1.0 → 正则化强度λ # 值越大 正则化越强 模型越简单 偏差越大方差越小 # 值为 0 等同于普通线性回归无正则化 # 推荐范围0.001 ~ 1000通过交叉验证选择最优值 # solver → 求解算法选择 # auto → 自动选择推荐让 sklearn 决定 # svd → 奇异值分解稳定但内存消耗大 # cholesky → Cholesky 分解适合小数据集 # lsqr → 最小二乘法速度最快推荐大数据集 # sag → 随机平均梯度下降需要设置 random_state # tol0.001 → 迭代收敛阈值越小越精确但训练越慢 ridge Ridge( alpha1.0, # 核心超参数需要调优 solverauto, # 自动选择最优求解器 tol0.001, random_state42 ) ridge.fit(X_train, y_train) print(fRidge R² 分数: {ridge.score(X_test, y_test):.4f}) print(迭代次数 n_iter_:, ridge.n_iter_) # 实际迭代次数 # ---- 推荐用法RidgeCV 自动选 alpha ---- # 传入一组候选 alphaRidgeCV 通过交叉验证自动选最优值 alphas [0.001, 0.01, 0.1, 1.0, 10.0, 100.0, 1000.0] ridge_cv RidgeCV(alphasalphas, cv5) # cv5 表示5折交叉验证 ridge_cv.fit(X_train, y_train) print(fRidgeCV 自动选择的最优 alpha: {ridge_cv.alpha_}) print(fRidgeCV R² 分数: {ridge_cv.score(X_test, y_test):.4f})五、Lasso — 稀疏回归L1正则化Lasso 会将不重要的特征权重压缩为 0自动实现特征选择是高维数据分析的利器。# 公主号船长Talk —— 实用的数据科学技术每天更新 # Lasso 稀疏回归完整示例含特征选择演示 from sklearn.linear_model import Lasso, LassoCV from sklearn.datasets import make_regression from sklearn.model_selection import train_test_split import numpy as np # 生成有100个特征但只有10个真正有用特征的数据 X, y make_regression( n_samples200, n_features100, # 100 个特征 n_informative10, # 只有 10 个特征真正有影响 noise5, random_state42 ) X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.2, random_state42) # Lasso 核心参数说明 # alpha1.0 → 正则化强度同 Ridge越大越稀疏 # precomputeFalse → 是否预先计算 Gram 矩阵小数据集设 True 可加速大数据集设 False # max_iter1000 → 最大迭代次数如遇到不收敛警告可适当增大 # warm_startFalse → 是否使用上次训练结果做热启动 # positiveFalse → 是否强制权重为正某些业务场景需要 # selection → 权重更新策略 # cyclic → 按顺序循环更新各权重分量默认 # random → 随机选择权重分量更新收敛可能更快 lasso Lasso( alpha0.1, max_iter2000, # 增大迭代次数防止不收敛 tol0.0001, selectioncyclic, random_state42 ) lasso.fit(X_train, y_train) # 统计非零权重被选中的特征数量 non_zero_features np.sum(lasso.coef_ ! 0) print(fLasso 选中了 {non_zero_features}/100 个特征) # 预期约10个 print(fLasso R² 分数: {lasso.score(X_test, y_test):.4f}) # ---- 推荐用法LassoCV 自动选 alpha ---- # 高维稀疏数据的首选方案自动特征选择 自动调参 alphas np.logspace(-4, 1, 50) # 从 0.0001 到 10共50个候选值 lasso_cv LassoCV(alphasalphas, cv5, max_iter5000, random_state42) lasso_cv.fit(X_train, y_train) print(f\nLassoCV 自动选择的最优 alpha: {lasso_cv.alpha_:.4f}) selected np.sum(lasso_cv.coef_ ! 0) print(fLassoCV 选中了 {selected}/100 个特征) print(fLassoCV R² 分数: {lasso_cv.score(X_test, y_test):.4f})六、三种模型对比总结模型正则化方式特征选择适用场景推荐变体LinearRegression无否特征少、无过拟合风险LinearRegressionRidgeL2L2权重压小否多重共线性防过拟合RidgeCV自动调参LassoL1L1权重清零✅ 是高维稀疏数据特征筛选LassoCV自动调参# 公主号船长Talk —— 数据分析 / 职场 / 投资三个方向每天更新 # 实战建议如何选择合适的线性回归模型 # 场景1普通线性关系特征数量少20 from sklearn.linear_model import LinearRegression model LinearRegression() # 场景2特征有多重共线性 或 需要防过拟合不关心特征筛选 from sklearn.linear_model import RidgeCV model RidgeCV(alphas[0.1, 1.0, 10.0], cv5) # 场景3特征维度高50怀疑只有少数特征有效需要自动特征选择 from sklearn.linear_model import LassoCV import numpy as np model LassoCV(alphasnp.logspace(-4, 1, 50), cv5, max_iter5000) # 通用训练流程三种模型一样 # model.fit(X_train, y_train) # print(测试集得分:, model.score(X_test, y_test))掌握这三个线性模型是入门机器学习的第一步。更多数据分析实战内容持续更新中。

相关文章:

Python机器学习sklearn线性模型完整指南:LinearRegression/Ridge/Lasso详细代码注释

机器学习sklearn模型核心API详解:线性回归、岭回归、Lasso全覆盖(详细代码注释)scikit-learn 是 Python 机器学习最常用的库,但很多初学者对各模型的参数含义一知半解。本文系统整理了 sklearn 中线性模型家族(LinearR…...

Python数据处理实战:列表推导式+time库+DataFrame+groupby详细代码注释

🚢 船长Talk | 每天一篇数据分析干货 关注公众号「船长Talk」,获取更多 Python / 数据分析 / SQL 实战技巧,附完整注释代码。 每篇文章都有详细代码注释,学了就能用。Python 数据处理实战:列表推导式 time库 DataFra…...

2-3 上下文管理:让AI真正“看懂“你的项目

你有没有遇到过这种情况: 同一个AI编程工具,在Project A里表现得像个资深架构师,能准确遵循项目规范、理解业务逻辑;到了Project B,却像个刚毕业的新手,写出完全不符合规范的代码,甚至提出违背项目基础设计的修改建议。 差距在哪里? 答案:上下文管理(Context Mana…...

无线工程师必备:用Wireshark解码802.11ac VHT Capabilities字段全攻略(含160MHz配置示例)

无线网络深度解析:802.11ac VHT Capabilities字段实战指南 在当代企业级无线网络部署中,802.11ac协议已成为高吞吐量应用的核心支撑。作为无线工程师,能否精准解读VHT(Very High Throughput)Capabilities信息元素&…...

代理商客户归管+赊欠账明细查询,易特进销存商贸版一键解决

做商贸生意的朋友,大概率会遇到这样的难题:发展了代理商拓展市场,代理商的客户却需要公司统一管理,既要明确客户归属,又要精准统计赊欠账目。比如代理商张三,总共欠公司1万元,查账时想清晰看到他…...

ADC类型解析与选型指南:从闪存到ΔΣ

1. ADC基础概念与核心原理在电子系统中,模拟信号到数字信号的转换(ADC)是实现物理世界与数字世界交互的关键桥梁。作为一名嵌入式开发者,我经常需要根据项目需求选择不同类型的ADC拓扑结构。让我们先拆解ADC的核心工作机制。ADC转…...

告别环境冲突:基于快马平台与homebrew打造团队高效统一开发环境

作为一名长期与团队协作的开发者,我深刻体会到环境配置不一致带来的痛苦。新同事入职要花一整天配环境,不同项目依赖冲突导致"在我机器上能跑"的经典问题,甚至同一项目组因为系统更新节奏不同而出现隐性兼容问题。最近尝试用homebr…...

编程中输入特殊字符的通用方法

编程里的特殊字符&#xff08;比如 # $ % ^ & * / \ < > " 等&#xff09;分两种场景&#xff1a;直接键盘输入&#xff08;写代码最常用&#xff09;、代码里输出 / 转义&#xff08;程序运行时显示&#xff09;&#xff0c;我给你整理了最简单、全覆盖的用法…...

济民健康医疗服务占比提升至46%!业务结构调整初见成效

济民健康医疗服务占比提升至46%&#xff01;业务结构调整初见成效济民健康2025年财报显示&#xff0c;公司医疗服务板块收入占比提升至46%&#xff0c;成为业绩重要支撑。尽管全年净利润预亏2.5亿至2.1亿元&#xff0c;但业务结构调整成效显著&#xff0c;医疗服务板块营收同比…...

Windows系统下CUDA Toolkit与cuDNN的安装与配置全攻略

1. 环境准备&#xff1a;确认你的硬件和系统支持 在开始安装CUDA Toolkit和cuDNN之前&#xff0c;首先要确认你的Windows系统是否满足基本要求。我遇到过不少朋友兴冲冲下载安装包&#xff0c;结果发现显卡根本不支持CUDA加速&#xff0c;白白浪费了时间。这里分享几个快速检查…...

OpenClaw自动化测试:Phi-3-vision-128k-instruct版本升级对比

OpenClaw自动化测试&#xff1a;Phi-3-vision-128k-instruct版本升级对比 1. 测试背景与动机 上周在星图镜像广场发现Phi-3-vision-128k-instruct的新版本镜像更新&#xff0c;作为长期使用OpenClaw进行自动化测试的技术爱好者&#xff0c;我决定系统性地验证这个号称"支…...

大模型微调终极指南:从基础概念到实战技巧

前言 近年来&#xff0c;大语言模型&#xff08;LLM&#xff09;的爆发式发展正在深刻改变人工智能的格局。然而&#xff0c;如何将这些通用模型适配到特定领域和任务&#xff0c;成为了开发者面临的核心挑战。本文将系统性地梳理大模型后训练的核心方法&#xff0c;从监督微调…...

SpringBoot 自动配置原理与实践

核心机制解析SpringBoot 的自动配置基于条件化装配思想&#xff0c;通过 Conditional 系列注解实现动态加载。spring-boot-autoconfigure 模块包含大量预定义配置类&#xff0c;例如 DataSourceAutoConfiguration 在检测到类路径存在 HikariCP 时自动初始化数据源。关键组件包括…...

VS2019+CMake实战:Super4PCS点云配准从源码编译到运行全流程指南

VS2019CMake实战&#xff1a;Super4PCS点云配准从源码编译到运行全流程指南 在三维视觉和机器人领域&#xff0c;点云配准一直是核心难题之一。Super4PCS算法作为4PCS的改进版本&#xff0c;以其在低重叠率点云上的优异表现&#xff0c;成为工业检测和SLAM系统中的热门选择。本…...

youtube上台式机 4k显示器配置

1.相关的网址信息https://www.youtube.com/watch?v66MawsFCgaY2.一个外国人做的相关的展示信息3.相关的配置如下amd r7 9800x3D 处理器显卡是技嘉的显卡 rtx5080 16gb内存的显卡...

深入解析Anaconda中的pkgs文件夹:功能、管理与优化策略

1. pkgs文件夹的核心功能解析 第一次打开Anaconda安装目录时&#xff0c;很多人都会被那个占据几个GB空间的pkgs文件夹吓一跳。这个看似普通的文件夹&#xff0c;其实是Anaconda生态系统的"心脏"。它不仅仅是存放安装包的仓库&#xff0c;更承担着环境管理的关键角色…...

history 常见优化配置

文章目录 一、写在哪个文件生效?(关键) ✅ Bash 环境下生效位置(最常见) 1️⃣ 全局生效(所有用户) ✅ 推荐方式(最规范) 2️⃣ 全局兜底(老系统) 3️⃣ 当前用户生效 ✅ 各文件加载顺序(很重要) 二、不同场景推荐配置位置 三、验证是否生效 四、一句话总结(运维…...

Burp Suite实战:如何用Base64编码爆破网站登录(附完整配置流程)

Burp Suite高级实战&#xff1a;Base64编码爆破攻击的深度解析与防御策略 在渗透测试领域&#xff0c;认证机制的安全性评估始终是核心环节。Base64编码作为一种常见的数据表示方式&#xff0c;常被误认为具有加密功能而用于认证传输。本文将深入剖析如何利用Burp Suite对采用B…...

Agent Skill 按需加载:架构设计与实现解析

❝当 AI Agent 需要的知识越来越多&#xff0c;把一切都塞进 System Prompt 显然不是个好主意。本文从架构设计的角度出发&#xff0c;深入探讨一种优雅的解法——「Skill 渐进式加载机制」。❞一、问题&#xff1a;当 Agent 需要"十八般武艺"构建一个功能丰富的 AI …...

nRF52轻量级NFC Type 2标签驱动库解析

1. 项目概述aconno_nrf52_nfc是一个专为 Nordic Semiconductor nRF52 系列 SoC&#xff08;如 nRF52832、nRF52840&#xff09;设计的轻量级 NFC 标签驱动库。该库不依赖于 Nordic SDK 的完整 NFC 协议栈&#xff08;如nfc_t2t_lib或nfc_ndef&#xff09;&#xff0c;而是直接操…...

C++ lambda 捕获机制与作用域

C lambda 捕获机制与作用域探析 在C11引入的lambda表达式为开发者提供了更灵活的匿名函数实现方式&#xff0c;其核心特性之一是捕获机制&#xff0c;允许lambda访问外部作用域的变量。理解捕获规则与作用域的关系&#xff0c;不仅能避免常见错误&#xff0c;还能提升代码的简…...

BGP选路实战:从理论到实验的十三条法则

1. BGP选路原则概述&#xff1a;网络工程师的导航系统 如果把互联网比作一个超级城市&#xff0c;BGP就是这座城市的路由导航系统。作为网络工程师&#xff0c;我们每天都要处理成千上万条路由信息&#xff0c;而BGP的十三条选路原则就是帮助我们做出最优路径选择的黄金法则。这…...

SinricPro_Generic库:多平台MCU接入Alexa的嵌入式通信框架

1. SinricPro_Generic 库深度技术解析&#xff1a;面向多平台嵌入式设备的 Alexa 智能家居接入方案1.1 库定位与核心价值SinricPro_Generic是一个高度工程化的、面向生产环境的嵌入式 IoT 通信中间件&#xff0c;其核心使命是将资源受限的微控制器&#xff08;MCU&#xff09;无…...

LabelImg闪退报错别慌!手把手教你排查‘list index out of range’和‘ValueError’

LabelImg闪退报错全攻略&#xff1a;从崩溃到流畅标注的完整指南 当你正全神贯注地标注数据集时&#xff0c;LabelImg突然闪退并抛出一串红色错误信息——这种经历对任何AI从业者来说都堪称噩梦。别担心&#xff0c;这不是你一个人的问题。根据社区统计&#xff0c;超过60%的La…...

保姆级教程:在绿联NAS的Docker里部署PaddleOCR,打造本地私有化文字识别服务

绿联NASDockerPaddleOCR&#xff1a;三步构建家庭级隐私文字识别中心 想象一下这样的场景&#xff1a;周末整理书房时&#xff0c;你翻出一叠泛黄的老照片和手写笔记&#xff0c;想将它们数字化保存却又担心上传到云端OCR服务会泄露家庭隐私&#xff1b;或是收到一份重要合同需…...

棕榈酰化修饰:从基础研究到癌症治疗的5个关键突破点

棕榈酰化修饰&#xff1a;从基础研究到癌症治疗的5个关键突破点 在肿瘤免疫治疗领域&#xff0c;蛋白质翻译后修饰的调控机制正成为突破性疗法的新靶点。棕榈酰化修饰——这种将16碳棕榈酸共价连接到蛋白质半胱氨酸残基上的动态过程&#xff0c;近年来因其在癌细胞信号传导中的…...

SDS011传感器驱动开发:嵌入式PM2.5/PM10检测实战指南

1. SDS011传感器库技术解析&#xff1a;嵌入式系统中的PM2.5/PM10颗粒物检测实践指南1.1 项目定位与工程价值SDS011是由中国Nova Fitness公司推出的低成本、高可靠性激光散射式颗粒物传感器&#xff0c;专为环境空气质量监测设计。该传感器可同时输出PM2.5和PM10质量浓度数据&a…...

RTOS核心原理与嵌入式开发实战指南

1. RTOS的本质与适用场景我第一次接触RTOS是在2013年做工业控制器项目时&#xff0c;当时用裸机编程遇到了任务调度难题。RTOS&#xff08;Real-Time Operating System&#xff09;与传统操作系统的本质区别在于"确定性"——它能够保证在严格的时间约束内完成任务调度…...

SEO 究竟是什么_外链对SEO重要吗_如何建设外链

SEO 究竟是什么_外链对SEO重要吗?如何建设外链 在当今互联网时代&#xff0c;网站的流量和排名直接关系到企业的收入和市场竞争力。而搜索引擎优化&#xff08;SEO&#xff09;作为网站运营的核心技术之一&#xff0c;无疑是每一个网站经营者都不能忽视的重要环节。本文将深入…...

第一次遇见动态规划

一、什么是动态规划 动态规划是对问题的各状态维度进行分阶段、有顺序、无重复、决策性的遍历求解的算法思想。 “状态”、“阶段”、“决策”是构成动态规划算法的三要素。 问题能用动态规划求解需要满足三个基本条件&#xff1a; 1、子问题重叠性&#xff1a;动态规划算法…...