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

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.dtcms.com/a/269775.html

相关文章:

  • 2025年Linux安装MySQL详细教程
  • mysql-笔记
  • 服务器经常出现蓝屏是什么原因导致的?如何排查和修复?
  • Nature子刊:EPFL-ANU团队实现晶格对称性编程手性,双通道光学加密动态范围创1.6新高
  • Element-Plus-全局自动引入图标组件,无需每次import
  • 集群与集群应用
  • 东南亚主播解决方案|东南亚 TikTok 直播专线:纯净住宅 IP 、直播不卡顿
  • Spring自动装配(xml)
  • 芯片之后,AI之争的下一个战场是能源?
  • 小架构step系列08:logback.xml的配置
  • 知识库中如何确实嵌入文本块大小?语义完整性与检索颗粒度的平衡机制
  • 聊一聊软件架构师
  • C++排序算法全解析(加强版)
  • 单调栈通关指南:从力扣 84 到力扣 42
  • 前端技术小结
  • Android Jetpack Compose状态管理与状态提升
  • linux安装CUDA
  • VM文件管理与Vi/vim操作
  • multicore和multithreading
  • 多模态交互HMI全解析:语音、手势、眼动追踪的集成方案
  • rocketmq 刷盘机制 与同步机制区别
  • JavaScript之数组方法详解
  • VSYNC 深度解析
  • Apollo源码架构解析---附C++代码设计示例
  • 提炼总结—ROS2机器人开发(完结)
  • 【WEB】Polar靶场 16-20题 详细笔记
  • Python实现二分查找算法详解
  • 经典论文 Science子刊:数据驱动的偏微分方程发现 —— Supplementary Materials
  • 找了两个月,没找到工作
  • 【笔记】开源 AI Agent 项目 V1 版本 [新版] 部署 日志