Python 機器學習核心入門與實戰進階 Day 6 - 模型保存與加載(joblib / pickle)

? 今日目標

  • 掌握如何將訓練好的模型持久化保存到文件
  • 熟悉兩種主流保存方式:joblibpickle
  • 加載模型并應用于新數據預測
  • 實現完整的“訓練 → 保存 → 加載 → 預測”流程
  • 為后續部署做準備(如 Flask、FastAPI)

🧰 一、模型保存工具對比

工具特點推薦場景
picklePython 原生序列化工具,支持任意對象通用保存
joblib專為 NumPy / sklearn 設計,速度快大模型保存

🧪 二、基本用法示例

? 使用 joblib

from joblib import dump, load# 保存模型
dump(model, 'model.joblib')# 加載模型
model = load('model.joblib')

? 使用 pickle

import pickle# 保存
with open('model.pkl', 'wb') as f:pickle.dump(model, f)# 加載
with open('model.pkl', 'rb') as f:model = pickle.load(f)

🧠 三、完整流程練習建議

  1. 使用 SVC 訓練一個模型(可復用之前數據)
  2. 使用 joblib 保存模型
  3. 清空變量,重新加載模型
  4. 對測試集進行預測,驗證效果是否一致
  5. 可封裝為 model_utils.py 工具模塊

🧾 今日總結

學會了什么用來干嘛
joblib.dump/load()快速保存/加載模型
pickle.dump/load()更通用但稍慢
模型持久化流程為部署和復用做準備

📁 練習腳本:save_load_model_demo.py

# SVM 模型保存與加載演示(使用 joblib)import numpy as np
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from joblib import dump, load# 構造數據
np.random.seed(42)
size = 100
scores = np.random.randint(40, 100, size)
genders = np.random.choice([0, 1], size=size)
labels = (scores >= 60).astype(int)X = np.column_stack(((scores - scores.mean()) / scores.std(), genders))
y = labelsX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 訓練模型
model = SVC(kernel='rbf', C=1.0, gamma='scale')
model.fit(X_train, y_train)# 保存模型
dump(model, 'svm_model.joblib')
print("模型已保存為 svm_model.joblib")# 加載模型
loaded_model = load('svm_model.joblib')
print("模型已加載成功")# 預測與評估
y_pred = loaded_model.predict(X_test)
print("測試集準確率:", accuracy_score(y_test, y_pred))

運行輸出:

模型已保存為 svm_model.joblib
模型已加載成功
測試集準確率: 1.0

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/913554.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/913554.shtml
英文地址,請注明出處:http://en.pswp.cn/news/913554.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【SigNoz部署安裝】Ubuntu環境部署SigNoz:Docker容器化監控的全流程指南

文章目錄前言1.關于SigNoz2.本地部署SigNoz3.SigNoz簡單使用4. 安裝內網穿透5.配置SigNoz公網地址6. 配置固定公網地址前言 在分布式架構主導的現代運維體系中,系統性能監控正面臨范式變革的關鍵轉折。當微服務架構遭遇服務雪崩、無服務器架構出現冷啟動延遲等復雜…

NV298NV312美光固態閃存NW639NW640

美光固態閃存技術全景解析:從NV298到NW640的深度探索近年來,美光科技憑借其在3D NAND閃存技術上的持續突破,推出了多款備受市場關注的固態硬盤產品。本文將從技術評測、產品對比、市場趨勢、用戶反饋及應用場景等多個維度,深入剖析…

2025.07.04【服務器】|使用萬兆網卡提升服務器間互聯速度,實現快速數據傳輸

文章目錄1. **萬兆網卡概述**2. **為什么選擇萬兆網卡**3. **萬兆網卡配置與安裝**3.1 **安裝網卡**3.2 **安裝驅動程序**3.3 **檢查網卡狀態**4. **配置網絡接口**4.1 **Linux 系統配置**4.2 **Windows 系統配置**5. **優化性能**5.1 **使用多線程傳輸**5.2 **開啟 TCP/UDP 窗…

光伏發電量精準估算,提升投資效益

在光伏產業規模化發展進程中,準確估算光伏發電量是提升項目投資效益的關鍵環節。科學的發電量預測不僅能為項目可行性研究提供依據,更能在電站全生命周期內優化運營策略,實現投資回報最大化。基于多維度數據整合與智能算法構建的精準預測體系…

Linux的互斥鎖、Linux的POSIX信號量(二值、計數)、RTOS的二值信號量

鎖和信號量最大的區別就是:鎖嚴格要求 “誰占用誰釋放”,而信號量允許 “一個任務 / 線程釋放,另一個任務 / 線程獲取”。 特性互斥鎖(Mutex)POSIX 信號量(Semaphore)初始狀態初始為 “鎖定”(PTHREAD_MUTEX_INITIALIZER),需顯式獲取(pthread_mutex_lock)。初始值可…

基于Java+SpringBoot 協同過濾算法私人診所管理系統

源碼編號:S607源碼名稱:基于SpringBoot5的協同過濾算法的私人診所管理系統用戶類型:雙角色,患者、醫生、管理員數據庫表數量:15 張表主要技術:Java、Vue、ElementUl 、SpringBoot、Maven運行環境&#xff1…

什么是DINO?

DINO 是一個由 Meta AI (當時的 Facebook AI) 在 2021 年提出的自監督學習框架,其全稱是 “self-DIstillation with NO labels”,直譯為“無標簽的自我蒸餾”。這個名字精準地概括了它的核心思想。 DINO 的出現是一個里程碑,因為它首次有力地…

如何在 Android Framework層面控制高通(Qualcomm)芯片的 CPU 和 GPU。

如何在 Android Framework層面控制高通(Qualcomm)芯片的 CPU 和 GPU。 參考:https://blog.csdn.net/YoungHong1992/article/details/117047839?utm_source%20%20uc_fansmsg 作為一名 Framework 開發者,您擁有系統級的權限&#…

程序員在線接單

十年Java全棧工程師在線接單Java程序代做,兼職接單,系統代做,二次開發,網站開發部署,項目合作,商業項目承包 全棧開發,支持定制各種管理系統、小程序 商用或個人使用等項目都接 服務二: Java調試…

Python 異步爬蟲(aiohttp)高效抓取新聞數據

一、異步爬蟲的優勢 在傳統的同步爬蟲中,爬蟲在發送請求后會阻塞等待服務器響應,直到收到響應后才會繼續執行后續操作。這種模式在面對大量請求時,會導致大量的時間浪費在等待響應上,爬取效率較低。而異步爬蟲則等待可以在服務器…

Jenkins Pipeline(二)

1.Pipeline 變量 在 Jenkins 管道(Pipeline)中,變量是一種非常有用的功能,它們可以幫助你在構建過程中存儲和傳遞數據。Jenkins 管道支持多種方式來定義和使用變量,包括環境變量、腳本變量以及全局變量。 1.2 腳本變…

springsecurity02

提前打開Redis1)通過內置的用戶名和密碼登錄spring-boot-starter-security.jar2)使用自定義用戶名和密碼登錄UserDetailService自定義類實現UserDetailService接口,重寫loadUserByUsername方法class UserDetailServiceImpl implements UserDe…

Apache組件遭大規模攻擊:Tomcat與Camel高危RCE漏洞引發數千次利用嘗試

漏洞態勢分析帕洛阿爾托網絡公司Unit 42團隊最新研究報告顯示,針對Apache Tomcat和Apache Camel關鍵漏洞的網絡攻擊正在全球激增。2025年3月披露的這三個遠程代碼執行(RCE, Remote Code Execution)漏洞——CVE-2025-24813(Tomcat&…

Odoo 中國特色高級工作流審批模塊研發

本文旨在為基于Odoo 18平臺開發一款符合中國用戶習慣的、功能強大的通用工作流審批模塊提供一份全面的技術實現與產品設計方案。該模塊的核心特性包括:為最終用戶設計的圖形化流程設計器、對任意Odoo模型的普適性、復雜的審批節點邏輯(如會簽、條件分支、…

unplugin-vue-components 最佳實踐手冊

🎨 unplugin-vue-components 最佳實踐手冊 整理不易,收藏、點贊、關注支持下!本文詳細介紹了 unplugin-vue-components 插件的作用、配置方法、常用場景及與 unplugin-auto-import 配合使用的實戰技巧,特別適合 Vue 3 Vite 項目。…

? Java 學習日志 01

Java 運行機制: 原文件>編譯器>字節碼(class后綴)>JVM虛擬機>操作系統既有編譯的過程也有解釋的過程。JVM:Java Virture Machine/執行字節碼的虛擬機,是實現跨平臺——Java核心機制的核心。 JRE&…

基于Flutter的web登錄設計

基于Flutter的web登錄設計 1. 概述 本文檔詳細介紹了基于Flutter Web的智能家居系統登錄模塊的設計與實現。登錄模塊作為系統的入口,不僅提供了用戶身份驗證功能,還包括注冊新用戶的能力,確保系統安全性的同時提供良好的用戶體驗。 本文檔…

Maven繼承:多模塊項目高效管理秘笈

Maven繼承是Maven項目管理中的核心機制,允許子模塊共享并統一管理父模塊的配置信息(尤其是依賴關系),其核心原理與Java中的類繼承類似。以下是關鍵要點解析:一、核心概念與作用消除配置冗余 多個子模塊共享相同依賴&am…

關于系統無法找到 arm-linux-gcc 命令,這表明你的環境中尚未安裝 ARM 交叉編譯工具鏈。以下是詳細的解決方案:(DIY機器人工房)

1. 錯誤原因分析 錯誤信息:無法將“arm-linux-gcc”項識別為 cmdlet/函數/程序 這說明 Windows 或 Cygwin 環境中沒有安裝 ARM 交叉編譯工具,或者工具路徑未添加到系統 PATH 中。當前環境: 你之前使用的是 Cygwin 環境下的 x86_64 架構 GCC&…

redis一篇入門

一、Redis 安裝 Linux 系統安裝通過包管理器安裝 (以 Ubuntu 為例): sudo apt update sudo apt install redis-server從源碼編譯安裝: wget https://download.redis.io/redis-stable.tar.gz tar -xzvf redis-stable.tar.gz cd redis-stable make sudo make installWindows 安裝…