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

【机器学习算法基础】(基础机器学习课程)-10-逻辑回归-笔记

一、模型的保存与加载

 

 

 

 

逻辑回归是一种常见的机器学习算法,广泛用于分类问题。为了在不同的时间或环境下使用训练好的模型,我们通常需要将其保存和加载。

保存模型

  1. 训练模型:首先,你需要用你的数据训练一个逻辑回归模型。例如,在Python中使用scikit-learn库,你可以这样做:

    from sklearn.linear_model import LogisticRegression 
    model = LogisticRegression() 
    ​​​​​​​model.fit(X_train, y_train)

  2. 保存模型:训练好模型后,你需要将其保存到一个文件中。这样你就不需要每次都重新训练模型。常用的方法是使用Python的pickle库或joblib库。以下是使用joblib库的示例:

    import joblib
    joblib.dump(model, 'logistic_regression_model.pkl')
    

    这里的'logistic_regression_model.pkl'是你保存模型的文件名。你可以选择任何合适的文件名和路径。

加载模型

  1. 加载模型:当你需要使用之前保存的模型时,可以将其从文件中加载回来。继续使用joblib库,加载模型的方法如下:

    model = joblib.load('logistic_regression_model.pkl')
    

    使用模型进行预测:加载模型后,你就可以直接使用它进行预测,而不需要重新训练模型。例如:

  2. 使用模型进行预测:加载模型后,你就可以直接使用它进行预测,而不需要重新训练模型。例如:
    predictions = model.predict(X_test)

总结

  • 为什么保存模型? 保存模型的主要目的是为了节省时间和计算资源。训练模型可能需要大量的数据和时间,而保存模型后可以在需要时直接加载和使用。
  • 保存模型的方法:常用的库包括pickle和joblib,joblib在处理大文件时效率更高。
  • 加载模型:加载模型非常简单,只需一行代码就可以将保存的模型加载回来,方便快速进行预测或分析。

实际应用场景

想象你是一个数据科学家,在一个项目中你花了几个小时甚至几天时间来训练一个逻辑回归模型,用于预测某些客户是否会购买你的产品。模型训练好了,你不希望每次运行预测时都重新训练模型,所以你会将其保存。当你需要在下个月或明年再次运行预测时,你只需要加载保存好的模型,而无需重新训练,大大节省了时间和资源。

这种方法不仅适用于逻辑回归模型,还适用于其他机器学习模型,如决策树、支持向量机和神经网络等。模型的保存与加载是机器学习工作流程中非常重要的一部分,可以提高效率和便利性。

二、逻辑回归定义,损失函数,优化与线性回归比较

 

 

 

 

 

 

 

 

 逻辑回归是一种用于分类问题的机器学习算法,尽管名字中有“回归”二字,但它实际上用于二分类或多分类任务。

 

小结

  • 逻辑回归用于分类问题,通过逻辑函数将线性模型的输出映射到概率值。
  • 损失函数为对数损失函数,最小化它以优化模型。
  • 优化方法主要为梯度下降。
  • 与线性回归的比较显示了它们在任务、输出、假设、模型和损失函数上的不同之处。

三、逻辑回归预测癌症案例

 

 

 

 

场景设定

假设我们有一组数据,记录了若干患者的健康状况及其是否患有癌症。数据包括患者的年龄、体重、是否吸烟等信息,以及是否患有癌症(0表示未患癌,1表示患癌)。

目标

我们的目标是利用这些数据训练一个逻辑回归模型,当我们输入新的患者信息时,模型可以预测该患者是否患有癌症的概率。

步骤

  1. 收集和准备数据

    • 数据集可能包含以下信息:
      | 年龄 | 体重 | 吸烟 | 是否患癌 |
      |----|----|----|-------|
      | 45 | 70 | 1  | 1     |
      | 50 | 65 | 0  | 0     |
      | 40 | 80 | 1  | 1     |
      | 30 | 60 | 0  | 0     |
      
    • 每一行代表一个患者的信息。
  2. 训练模型

    • 使用这些数据来训练逻辑回归模型。
    from sklearn.linear_model import LogisticRegression
    import pandas as pd# 假设数据已经被加载到一个DataFrame中
    data = pd.DataFrame({'age': [45, 50, 40, 30],'weight': [70, 65, 80, 60],'smoke': [1, 0, 1, 0],'cancer': [1, 0, 1, 0]
    })X = data[['age', 'weight', 'smoke']]
    y = data['cancer']model = LogisticRegression()
    model.fit(X, y)
    
  3. 保存模型

    • 训练好模型后,将其保存到文件中,以便后续使用。
    import joblib
    joblib.dump(model, 'cancer_prediction_model.pkl')
    

    加载模型和预测

    • 当有新的患者信息时,可以加载保存的模型并进行预测。
    # 加载模型
    model = joblib.load('cancer_prediction_model.pkl')# 新患者的信息
    new_patient = [[50, 70, 1]]# 预测该患者患癌的概率
    cancer_probability = model.predict_proba(new_patient)[0][1]
    print(f'该患者患癌的概率是: {cancer_probability:.2f}')
    

结果解释

  • 输出结果:模型会输出一个概率值,表示患者患癌的可能性。例如,输出值为0.81,表示该患者有81%的可能性患癌。

逻辑回归在癌症预测中的优势

  • 处理概率问题:逻辑回归擅长处理二分类问题,如“是否患癌”这种是或否的问题。
  • 概率输出:模型提供概率值而不是简单的分类,有助于医生根据概率值做进一步判断。
  • 解释性强:逻辑回归的模型参数可以解释每个特征对预测结果的影响,帮助理解哪些因素更容易导致癌症。

小结

通过这个案例,我们可以看到逻辑回归在实际生活中的应用。它通过学习患者的历史数据,构建一个模型,帮助预测新患者是否患有癌症。这种方法不仅高效,而且能够提供概率结果,辅助医生进行决策。

四、逻辑回归总结

 

 

 

 

相关文章:

【机器学习算法基础】(基础机器学习课程)-10-逻辑回归-笔记

一、模型的保存与加载 逻辑回归是一种常见的机器学习算法,广泛用于分类问题。为了在不同的时间或环境下使用训练好的模型,我们通常需要将其保存和加载。 保存模型 训练模型:首先,你需要用你的数据训练一个逻辑回归模型。例如&…...

自动驾驶行业知识汇总

应届生月薪2W的自动驾驶开发、机器人、后端开发,软件开发该如何学习相关技术栈_哔哩哔哩_bilibili 两万字详解自动驾驶开发工具链的现状与趋势 (qq.com) 九章智驾 - 2023年度文章大合集 (qq.com) 九章 - 2022年度文章大合集 (qq.com)...

C#根据反射操作对象

前言 反射使用,让我们的程序可以动态增加一些功能,让原本固化的步骤逻辑变得动态,这是它的优点。当然使用反射首次加载会有性能损耗以及使用复杂;但是现在大家都在讲动态,使用好它应该是一个重要的编程理念提升。MVC、…...

打包python脚本(flask、jinja2)为exe文件

20240803 概述 在我很早时候学习python的时候,就利用过某个工具将其打包为exe文件,然后在没有python环境的机器上运行,这样可以减少安装python环境和各种库的过程。 最近在开发一个在虚拟机上运行的程序的时候就遇到了打包一些环境的问题&…...

嵌入式初学-C语言-练习三

#部分题目可能在之前的博客中有&#xff0c;请谅解&#xff0c;保证常见题型均被发出# 1.计算n以内所有正奇数的和 ? n值通过键盘输入 代码&#xff1a; 1 /*2 需求&#xff1a;计算n以内所有正奇数的和 ? n值通过键盘输入3 */4 #include <stdio.h>5 6 int main()7 …...

最新版Sonible Plugins Bundle v2024 winmac,简单智能,持续更新长期有效

一。Sonible Plugins Bundle v2024 win&mac Sonible Plugins Bundle是一款以创作者为中心的智能音频插件系列。这些工具的特点是易于使用&#xff0c;搭配高级处理和优质音质。pure:bundle的所有插件都由sonible的智能插件系列中使用的技术驱动&#xff0c;但在设计时考虑到…...

J032_实现简易版的B/S架构

一、需求描述 实现简易版的B/S架构 1.1 Server package com.itheima.tcp4;import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.Executors; import java.uti…...

【前端面试】五、框架

目录 1 Vue2 2 Vue3 3 React 4 Angular 1 Vue2 Vue2 是目前仍被广泛使用的前端框架之一&#xff0c;其特点包括响应式数据绑定、组件化开发等。 响应式系统&#xff1a;Vue2 使用 Object.defineProperty 来实现数据的响应式。每个组件实例在创建时&#xff0c;会将 dat…...

C语言 | Leetcode C语言题解之第316题去除重复字母

题目&#xff1a; 题解&#xff1a; char* removeDuplicateLetters(char* s) {int vis[26], num[26];memset(vis, 0, sizeof(vis));memset(num, 0, sizeof(num));int n strlen(s);for (int i 0; i < n; i) {num[s[i] - a];}char* stk malloc(sizeof(char) * 27);int stk…...

本地部署 Llama-3-EvoVLM-JP-v2

本地部署 Llama-3-EvoVLM-JP-v2 0. 引言1. 关于 Llama-3-EvoVLM-JP-v22. 本地部署2-0. 克隆代码2-1. 安装依赖模块2-2. 创建 Web UI2-3.启动 Web UI2-4. 访问 Web UI 0. 引言 Sakana AI 提出了一种称为进化模型合并的方法&#xff0c;并使用该方法创建大规模语言模型&#xff…...

Evaluating the Generation Capabilities of Large Chinese Language Models

文章目录 题目摘要相关工作CG-Eval实验 题目 评估大型中文语言模型的生成能力 论文地址&#xff1a;https://arxiv.org/abs/2308.04823 项目地址&#xff1a;http://cgeval.besteasy.com/ 摘要 本文介绍了 CG-Eval&#xff0c;这是有史以来第一个全面的自动化评估框架&#xf…...

YOLOv8添加注意力模块并测试和训练

YOLOv8添加注意力模块并测试和训练 参考bilibili视频 yolov8代码库中写好了注意力模块&#xff0c;但是yolov8的yaml文件中并没用使用它&#xff0c;如下图的通道注意力和空间注意力以及两者的结合CBAM&#xff0c;打开conv.py文件可以看到&#xff0c;其中包含了各种卷积块的…...

「Unity3D」自动布局LayoutElement、ContentSizeFitter、AspectRatioFitter、GridLayoutGroup

布局元素与布局控制器 布局元素实现ILayoutElement接口&#xff0c;布局控制器实现ILayoutController接口&#xff0c;后者根据前者的属性控制具体布局——有些布局控制器也是布局元素&#xff0c;即同时实现这两个接口&#xff0c;如LayoutGroup。 public interface ILayout…...

【Golang 面试 - 进阶题】每日 3 题(十六)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…...

Redis2

为什么Redis要给缓存数据设置过期时间&#xff1f; 内存是有限的&#xff0c;如果缓存中的所有数据都是一直保存&#xff0c;很容易OOM Redis如何判断数据是否过期&#xff1f; 通过过期字典来保存数据的过期时间 过期删除策略 Redis采用的是定期删除惰性删除 Redis内存淘…...

C语言--函数

1. 函数定义 语法&#xff1a; 类型标识符 函数名&#xff08;形式参数&#xff09; {函数体代码 } &#xff08;1&#xff09;类型标识符 --- 数据类型&#xff08;函数要带出的结果的类型&#xff09; 注&#xff1a;数组类型不能做函数返回结果的类型&#xff0c;如果函…...

Shell 编程的高级技巧和实战应用

第一步&#xff1a;高级函数和模块化设计 1.1 高级函数设计 探讨函数的参数处理和默认值设置。示例&#xff1a;实现一个可以处理可选参数的函数。 #!/bin/bashgreet() {local name${1:-"World"} # 如果没有提供参数&#xff0c;使用默认值 "World"ech…...

VMWare虚拟机如何连接U盘

检查配置 1&#xff09;Win R键&#xff0c;输入services.msc&#xff0c;打开服务。 2&#xff09;将AMware USB Arbitration Services 服务开启&#xff0c;并设置为自动启动&#xff1b; 连接U盘 目前作者了解有两种连接方式&#xff0c;如有其他连接方式&#xff0c;欢…...

【学习笔记】后缀自动机(SAM)

前言 之前对后缀自动机的理解太浅薄了&#xff0c;故打算重新写一篇。 后缀自动机是什么 后缀自动机是一个字符串的所有后缀建起来的自动机。它把所有子串&#xff08;后缀的前缀&#xff09;用 O ( n ) O(n) O(n) 的空间装了起来。后缀自动机的边会构成一个 D A G DAG DA…...

Godot的节点与场景

要深入的理解节点与场景&#xff0c;我们需要跳出这两个概念来看他。说的再直白一些godot本质就是一个场景编辑器&#xff01; 场景的概念应该在我们平时看电影看电视时会经常提到&#xff0c;比如某一个打斗的场景&#xff0c;这个场景可能会被设在某一个街道&#xff0c;那么…...

ROFL-Player:英雄联盟回放文件解析与管理的技术实践

ROFL-Player&#xff1a;英雄联盟回放文件解析与管理的技术实践 【免费下载链接】ROFL-Player (No longer supported) One stop shop utility for viewing League of Legends replays! 项目地址: https://gitcode.com/gh_mirrors/ro/ROFL-Player 在电子竞技数据分析领域…...

构建高可用代理池:开源工具agentpull的架构解析与实战部署

1. 项目概述&#xff1a;一个轻量级、可编程的代理拉取工具最近在折腾一些自动化任务和分布式爬虫时&#xff0c;经常遇到一个头疼的问题&#xff1a;如何高效、稳定地管理海量的代理IP资源。无论是数据采集、社交媒体运营还是安全测试&#xff0c;一个可靠的代理池都是基础设施…...

深入TEA5767数据手册:51单片机I²C驱动FM收音模块的避坑指南与调试心得

深入解析TEA5767&#xff1a;51单片机驱动FM收音模块的实战技巧 在嵌入式开发领域&#xff0c;能够独立解读芯片手册并实现功能驱动是工程师的核心能力之一。TEA5767作为一款经典的FM收音芯片&#xff0c;因其低功耗、高集成度和简单的IC接口而广受欢迎。本文将从一个实际开发者…...

别再死记硬背SPI时序了!用STM32CubeMX+W25Q128实战,5分钟搞懂CPOL/CPHA模式选择

从波形到代码&#xff1a;STM32CubeMX可视化解析SPI四种模式的实战指南 当第一次接触SPI通信时&#xff0c;那四种工作模式&#xff08;CPOL/CPHA组合&#xff09;就像天书一样令人困惑。传统教程往往要求死记硬背时序图&#xff0c;但今天我们将通过STM32CubeMX和W25Q128 Flas…...

开源大模型适配器Basaran:一键兼容OpenAI API,无缝集成私有化部署

1. 项目概述&#xff1a;当开源大模型遇上“文本补全”接口 如果你最近在折腾开源的大型语言模型&#xff08;LLM&#xff09;&#xff0c;比如 LLaMA、Falcon 或者国内的 ChatGLM、Qwen 系列&#xff0c;你肯定遇到过这样的场景&#xff1a;模型本身能力很强&#xff0c;但它…...

用STM32和RDM6300模块DIY一个EM4100 ID卡读卡器(附完整代码和避坑指南)

用STM32和RDM6300打造高稳定性EM4100读卡器&#xff1a;从硬件连接到算法优化 在智能门禁、仓储管理和物联网设备身份识别等领域&#xff0c;低频RFID技术因其稳定性和低成本始终占据重要地位。EM4100作为最经典的125kHz只读ID卡芯片&#xff0c;其兼容读卡器的DIY实现一直是嵌…...

在Ubuntu上快速搭建LVGL模拟器开发环境

1. 为什么选择Ubuntu搭建LVGL模拟器 LVGL作为当下最流行的嵌入式图形库之一&#xff0c;以其高度可裁剪性和低资源占用的特性赢得了广大开发者的青睐。在实际开发中&#xff0c;我们经常需要先在PC端完成界面原型设计&#xff0c;再移植到嵌入式设备。Ubuntu作为Linux发行版中的…...

别再手动整理停用词了!分享我私藏的NLP中英文停用词库(含哈工大、百度、川大版)

NLP停用词库实战指南&#xff1a;如何科学选择与高效应用 在自然语言处理项目中&#xff0c;数据预处理环节往往消耗开发者60%以上的时间&#xff0c;而停用词处理又是其中最基础却最容易出错的步骤。我曾见过团队因为使用不恰当的停用词表&#xff0c;导致情感分析模型将&quo…...

保姆级教程:用PyTorch复现DLA-34分割模型(含可变形卷积版DLAseg)

深度解析DLA-34分割模型&#xff1a;从理论到PyTorch实战 在计算机视觉领域&#xff0c;特征融合一直是提升模型性能的关键技术。Deep Layer Aggregation&#xff08;DLA&#xff09;作为CVPR 2018提出的创新架构&#xff0c;通过独特的树状连接机制实现了跨层级的深度特征融合…...

终极指南:3分钟掌握Deepin Boot Maker,轻松制作Linux启动盘

终极指南&#xff1a;3分钟掌握Deepin Boot Maker&#xff0c;轻松制作Linux启动盘 【免费下载链接】deepin-boot-maker 项目地址: https://gitcode.com/gh_mirrors/de/deepin-boot-maker 你是否曾经因为复杂的命令行操作而对Linux系统安装望而却步&#xff1f;或者面对…...