【机器学习算法基础】(基础机器学习课程)-10-逻辑回归-笔记
一、模型的保存与加载





逻辑回归是一种常见的机器学习算法,广泛用于分类问题。为了在不同的时间或环境下使用训练好的模型,我们通常需要将其保存和加载。
保存模型
-
训练模型:首先,你需要用你的数据训练一个逻辑回归模型。例如,在Python中使用scikit-learn库,你可以这样做:
from sklearn.linear_model import LogisticRegression model = LogisticRegression() model.fit(X_train, y_train) -
保存模型:训练好模型后,你需要将其保存到一个文件中。这样你就不需要每次都重新训练模型。常用的方法是使用Python的pickle库或joblib库。以下是使用joblib库的示例:
import joblib joblib.dump(model, 'logistic_regression_model.pkl')这里的
'logistic_regression_model.pkl'是你保存模型的文件名。你可以选择任何合适的文件名和路径。
加载模型
-
加载模型:当你需要使用之前保存的模型时,可以将其从文件中加载回来。继续使用joblib库,加载模型的方法如下:
model = joblib.load('logistic_regression_model.pkl')使用模型进行预测:加载模型后,你就可以直接使用它进行预测,而不需要重新训练模型。例如:
-
使用模型进行预测:加载模型后,你就可以直接使用它进行预测,而不需要重新训练模型。例如:
predictions = model.predict(X_test)
总结
- 为什么保存模型? 保存模型的主要目的是为了节省时间和计算资源。训练模型可能需要大量的数据和时间,而保存模型后可以在需要时直接加载和使用。
- 保存模型的方法:常用的库包括pickle和joblib,joblib在处理大文件时效率更高。
- 加载模型:加载模型非常简单,只需一行代码就可以将保存的模型加载回来,方便快速进行预测或分析。
实际应用场景
想象你是一个数据科学家,在一个项目中你花了几个小时甚至几天时间来训练一个逻辑回归模型,用于预测某些客户是否会购买你的产品。模型训练好了,你不希望每次运行预测时都重新训练模型,所以你会将其保存。当你需要在下个月或明年再次运行预测时,你只需要加载保存好的模型,而无需重新训练,大大节省了时间和资源。
这种方法不仅适用于逻辑回归模型,还适用于其他机器学习模型,如决策树、支持向量机和神经网络等。模型的保存与加载是机器学习工作流程中非常重要的一部分,可以提高效率和便利性。
二、逻辑回归定义,损失函数,优化与线性回归比较










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


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






场景设定
假设我们有一组数据,记录了若干患者的健康状况及其是否患有癌症。数据包括患者的年龄、体重、是否吸烟等信息,以及是否患有癌症(0表示未患癌,1表示患癌)。
目标
我们的目标是利用这些数据训练一个逻辑回归模型,当我们输入新的患者信息时,模型可以预测该患者是否患有癌症的概率。
步骤
-
收集和准备数据:
- 数据集可能包含以下信息:
| 年龄 | 体重 | 吸烟 | 是否患癌 | |----|----|----|-------| | 45 | 70 | 1 | 1 | | 50 | 65 | 0 | 0 | | 40 | 80 | 1 | 1 | | 30 | 60 | 0 | 0 | - 每一行代表一个患者的信息。
- 数据集可能包含以下信息:
-
训练模型:
- 使用这些数据来训练逻辑回归模型。
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) -
保存模型:
- 训练好模型后,将其保存到文件中,以便后续使用。
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语言-练习三
#部分题目可能在之前的博客中有,请谅解,保证常见题型均被发出# 1.计算n以内所有正奇数的和 ? n值通过键盘输入 代码: 1 /*2 需求:计算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是一款以创作者为中心的智能音频插件系列。这些工具的特点是易于使用,搭配高级处理和优质音质。pure:bundle的所有插件都由sonible的智能插件系列中使用的技术驱动,但在设计时考虑到…...
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 是目前仍被广泛使用的前端框架之一,其特点包括响应式数据绑定、组件化开发等。 响应式系统:Vue2 使用 Object.defineProperty 来实现数据的响应式。每个组件实例在创建时,会将 dat…...
C语言 | Leetcode C语言题解之第316题去除重复字母
题目: 题解: 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 提出了一种称为进化模型合并的方法,并使用该方法创建大规模语言模型ÿ…...
Evaluating the Generation Capabilities of Large Chinese Language Models
文章目录 题目摘要相关工作CG-Eval实验 题目 评估大型中文语言模型的生成能力 论文地址:https://arxiv.org/abs/2308.04823 项目地址:http://cgeval.besteasy.com/ 摘要 本文介绍了 CG-Eval,这是有史以来第一个全面的自动化评估框架…...
YOLOv8添加注意力模块并测试和训练
YOLOv8添加注意力模块并测试和训练 参考bilibili视频 yolov8代码库中写好了注意力模块,但是yolov8的yaml文件中并没用使用它,如下图的通道注意力和空间注意力以及两者的结合CBAM,打开conv.py文件可以看到,其中包含了各种卷积块的…...
「Unity3D」自动布局LayoutElement、ContentSizeFitter、AspectRatioFitter、GridLayoutGroup
布局元素与布局控制器 布局元素实现ILayoutElement接口,布局控制器实现ILayoutController接口,后者根据前者的属性控制具体布局——有些布局控制器也是布局元素,即同时实现这两个接口,如LayoutGroup。 public interface ILayout…...
【Golang 面试 - 进阶题】每日 3 题(十六)
✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/UWz06 📚专栏简介:在这个专栏中,我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏…...
Redis2
为什么Redis要给缓存数据设置过期时间? 内存是有限的,如果缓存中的所有数据都是一直保存,很容易OOM Redis如何判断数据是否过期? 通过过期字典来保存数据的过期时间 过期删除策略 Redis采用的是定期删除惰性删除 Redis内存淘…...
C语言--函数
1. 函数定义 语法: 类型标识符 函数名(形式参数) {函数体代码 } (1)类型标识符 --- 数据类型(函数要带出的结果的类型) 注:数组类型不能做函数返回结果的类型,如果函…...
Shell 编程的高级技巧和实战应用
第一步:高级函数和模块化设计 1.1 高级函数设计 探讨函数的参数处理和默认值设置。示例:实现一个可以处理可选参数的函数。 #!/bin/bashgreet() {local name${1:-"World"} # 如果没有提供参数,使用默认值 "World"ech…...
VMWare虚拟机如何连接U盘
检查配置 1)Win R键,输入services.msc,打开服务。 2)将AMware USB Arbitration Services 服务开启,并设置为自动启动; 连接U盘 目前作者了解有两种连接方式,如有其他连接方式,欢…...
【学习笔记】后缀自动机(SAM)
前言 之前对后缀自动机的理解太浅薄了,故打算重新写一篇。 后缀自动机是什么 后缀自动机是一个字符串的所有后缀建起来的自动机。它把所有子串(后缀的前缀)用 O ( n ) O(n) O(n) 的空间装了起来。后缀自动机的边会构成一个 D A G DAG DA…...
Godot的节点与场景
要深入的理解节点与场景,我们需要跳出这两个概念来看他。说的再直白一些godot本质就是一个场景编辑器! 场景的概念应该在我们平时看电影看电视时会经常提到,比如某一个打斗的场景,这个场景可能会被设在某一个街道,那么…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
