
什么是GPT-4?完整指南
優點:
缺點:
from joblib import dump, load
# 保存模型
def save_model_joblib(model, filepath):
try:
dump({
'model': model,
'metadata': {
'creation_date': '2025-02-10',
'framework_version': model.__class__.__module__
}
}, filepath, compress=3)
return True
except Exception as e:
print(f"保存模型失敗:{e}")
return False
# 加載模型
def load_model_joblib(filepath):
try:
data = load(filepath)
return data['model'], data['metadata']
except Exception as e:
print(f"加載模型失敗:{e}")
return None, None
from sklearn.ensemble import RandomForestClassifier
import joblib
# 創建和訓練模型
rf_model = RandomForestClassifier()
rf_model.fit(X_train, y_train)
# 方法 1:使用 joblib(推薦)
joblib.dump(rf_model, 'rf_model.joblib')
rf_model = joblib.load('rf_model.joblib')
# 方法 2:使用 pickle
import pickle
with open('rf_model.pkl', 'wb') as f:
pickle.dump(rf_model, f)
with open('rf_model.pkl', 'rb') as f:
rf_model = pickle.load(f)
3.2 XGBoost 模型
import xgboost as xgb
# 創建和訓練模型
xgb_model = xgb.XGBClassifier()
xgb_model.fit(X_train, y_train)
# 方法 1:XGBoost 原生格式(推薦)
# 保存
xgb_model.save_model('xgb_model.json') # JSON 格式
xgb_model.save_model('xgb_model.ubj') # 二進制格式
# 加載
xgb_model.load_model('xgb_model.json')
xgb_model.load_model('xgb_model.ubj')
# 方法 2:使用 pickle
with open('xgb_model.pkl', 'wb') as f:
pickle.dump(xgb_model, f)
3.3 LightGBM 模型
import lightgbm as lgb
# 創建和訓練模型
lgb_model = lgb.LGBMClassifier()
lgb_model.fit(X_train, y_train)
# 方法 1:LightGBM 原生格式(推薦)
# 保存
lgb_model.save_model('lgb_model.txt') # 文本格式
lgb_model.booster_.save_model('lgb_model.txt',
num_iteration=lgb_model.best_iteration_)
# 加載
lgb_model = lgb.Booster(model_file='lgb_model.txt')
3.4 CatBoost 模型
from catboost import CatBoostClassifier
# 創建和訓練模型
cat_model = CatBoostClassifier()
cat_model.fit(X_train, y_train)
# 方法 1:CatBoost 原生格式(推薦)
# 保存
cat_model.save_model('cat_model.cbm') # 二進制格式
cat_model.save_model('cat_model.json', format='json') # JSON 格式
# 加載
cat_model.load_model('cat_model.cbm')
cat_model.load_model('cat_model.json', format='json')
import torch
# 保存完整模型
torch.save(model, 'model.pth')
# 僅保存模型參數(推薦)
torch.save(model.state_dict(), 'model_params.pth')
# 加載完整模型
model = torch.load('model.pth')
# 加載模型參數
model = YourModelClass()
model.load_state_dict(torch.load('model_params.pth'))
4.2 TensorFlow/Keras 模型
import tensorflow as tf
# 保存完整模型
model.save('model_folder')
# 僅保存權重
model.save_weights('model_weights')
# 加載完整模型
model = tf.keras.models.load_model('model_folder')
# 加載權重
model = YourModelClass()
model.load_weights('model_weights')
def save_model_complete(model, filepath, model_info=None):
"""完整的模型保存方案"""
import json
from datetime import datetime
# 基本信息
save_info = {
'model_type': model.__class__.__name__,
'framework': model.__class__.__module__,
'save_time': datetime.now().isoformat(),
'version': '1.0.0',
}
# 添加自定義信息
if model_info:
save_info.update(model_info)
# 保存模型
try:
# 選擇合適的保存方法
if hasattr(model, 'save_model'):
# 使用模型原生保存方法
model.save_model(filepath)
else:
# 使用 joblib 作為默認方法
joblib.dump(model, filepath)
# 保存元數據
meta_filepath = filepath + '.meta.json'
with open(meta_filepath, 'w') as f:
json.dump(save_info, f, indent=2)
return True
except Exception as e:
print(f"保存模型失敗:{e}")
return False