? 今日目標
掌握如何將訓練好的模型持久化保存到文件 熟悉兩種主流保存方式: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