✅ 今日目标
掌握如何将训练好的模型持久化保存到文件 熟悉两种主流保存方式:joblib
和 pickle
加载模型并应用于新数据预测 实现完整的“训练 → 保存 → 加载 → 预测”流程 为后续部署做准备(如 Flask、FastAPI)
🧰 一、模型保存工具对比工具 特点 推荐场景 pickle
Python 原生序列化工具,支持任意对象 通用保存 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)
🧠 三、完整流程练习建议
使用 SVC 训练一个模型(可复用之前数据) 使用 joblib
保存模型 清空变量,重新加载模型 对测试集进行预测,验证效果是否一致 可封装为 model_utils.py
工具模块
🧾 今日总结学会了什么 用来干嘛 joblib.dump/load()
快速保存/加载模型 pickle.dump/load()
更通用但稍慢 模型持久化流程 为部署和复用做准备
📁 练习脚本:save_load_model_demo.py
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