1.使用lightGBM原生的接口保存为txt文件
# 模型训练
gbm = lgb.train(params, lgb_train, num_boost_round=20, valid_sets=lgb_eval, early_stopping_rounds=5)
# 模型保存
gbm.save_model('model.txt')
# 模型加载
gbm = lgb.Booster(model_file='model.txt')
# 模型预测
y_pred = gbm.predict(X_test, num_iteration=gbm.best_iteration)
2.使用pickle保存为pkl文件
import pickle
pickle.dump("lightGBMmodel.pkl")
pickle.load("lightGBMmodel.pkl");
// 凭记忆书写的代码,加载出错的话需要查一下pickle的具体用法
注意事项:
1).Python2版本的pickle文件和Python3版本的pickle不能互相加载,若要通用最好使用txt文件。
2).Python2的pkl转Python3的pkl模型文件可以通过lightGBM加载txt文件作为中介进行转化。
3.使用sklearn封装的接口保存为pkl文件
sklearn序列化模型好像就是pickle文件的封装
from lightgbm import LGBMRegressor
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import GridSearchCV
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.externals import joblib
# 模型训练
gbm = LGBMRegressor(objective='regression', num_leaves=31, learning_rate=0.05, n_estimators=20)
gbm.fit(X_train, y_train, eval_set=[(X_test, y_test)], eval_metric='l1', early_stopping_rounds=5)
# 模型存储
joblib.dump(gbm, 'loan_model.pkl')
# 模型加载
gbm = joblib.load('loan_model.pkl')
# 模型预测
y_pred = gbm.predict(X_test, num_iteration=gbm.best_iteration_)
4.sklearn模型和lightGBM模型模型互存
4.1 skleran模型的lightGBM的pkl文件转化为lightGBM的txt模型文件
import sys
import lightgbm as lgb
if sys.version_info.major == 2:
from sklearn.externals import joblib
else:
import joblib
model=joblib.load("sqli/sql_mls.m")
model.booster_.save_model("xxxxx.txt")
gbm = lgb.Booster(model_file='xxxxx.txt') # 验证是否转化成功
4.2 lightGBM的txt模型文件转化为skleran模型的lightGBM的pkl文件
可通过原生lightGBM加载txt模型然后使用步骤3转化
注意事项:lightGBM模型文件开头具有版本号,注意加载的版本号。