20220308
def data_save(path, model, model_name):
'''
模型保存
:param path: 模型保存路径
:param model: 保存模型
:param model_name: 模型名称
:return: 无
'''
# 编码模型保存
with open(path + model_name + ".pickle", "wb") as fr:
pickle.dump(model, fr)
def data_load(path, model_name):
'''
模型加载
:param path: 模型路径
:param model_name: 模型名称
:return: 返回加载后的模型
'''
# 编码模型加载
with open(path + model_name + ".pickle", "rb") as fw:
encoder_model = pickle.load(fw)
return encoder_model
字典就通过pickle保存就好了,pickle可以保存任何形式
20211203
Python3报错:TypeError: can't pickle _thread.RLock objects
tfidf_model = TfidfVectorizer(
tokenizer= None,
analyzer = 'word',
max_df=10000,
min_df=0,
smooth_idf=True,
norm="l2",
binary=False,
stop_words=stopwords,
).fit(idf_filter)
model_save(PATH + "model/",tfidf_model,config["model_name"])
tokenizer 如果是传入一个函数比如jieba.cut_for_search
pickle保存会报上面的错误,只有令tokenizer =None才能保存
20210610
保存文件
check point
pickle
20210531
import os
import yaml
from pathlib import Path
CONFIG_PATH = os.path.join(os.path.abspath(str(Path('.').absolute())), 'config.yml')
当前路径获取
CONFIG = yaml.load(open(CONFIG_PATH), Loader=yaml.FullLoader)
yaml 读取数据
20210413
https://blog.youkuaiyun.com/suiyueruge1314/article/details/88747916
字典的保存
20210121
import avro.schema
from avro.datafile import DataFileReader,DataFileWriter
from avro.io import DatumReader,DatumWriter
reader = DataFileReader(open(r"D:\code12temp\rongxiang\shd_product\data\testset.avro",'rb'),DatumReader())
for line in reader:
with open('./data/testset.txt','a',encoding='utf-8') as f:
f.write(str(line['id'])+'\t'+str(line['a'])+'\t'+str(line['b'])+'\t'+str(line['labels'])+'\n')
reader.close()
avro读取
20201221

lightgbm输入格式 都是ndarray
#lightgbm模型保存
with open(path+'/'+str(bclx)+'/lgbm.pickle', 'wb') as fr:
pickle.dump(clf_multilabel,fr)
# lightgbm模型加载
with open(path + '/'+str(bclx)+'/lgbm.pickle', 'rb') as fw:
lgbm=pickle.load(fw)

from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer(classes = [‘光伏电站发电’, ‘光伏电站’, ‘光伏组件’, ‘光伏电站工程’, ‘光伏应用系统’, ‘光伏硅片’])
zh=mlb.fit_transform([(‘光伏电站发电’, ‘光伏电站’), (‘光伏组件’,),(‘光伏电站工程’,)])
多标签输入处理格式
输入的只有标签
# 训练分类器
KerasClassifier 的输入输出
estimator = KerasClassifier(build_fn=baseline_model, epochs=1, batch_size=1, verbose=1)
estimator.fit(x_train, y_train)
model_json = estimator.model.to_json()
with open(path+"jj_model.json", 'w')as json_file:
json_file.write(model_json) # 权重不在json中,只保存网络结构
estimator.model.save_weights(path+'jj_model.h5')
# 加载模型用做预测
json_file = open(path+"jj_model.json", "r")
loaded_model_json = json_file.read()
json_file.close()
loaded_model = model_from_json(loaded_model_json)
loaded_model.load_weights(path+"jj_model.h5")
一维卷积分类 多分类 标签的输入格式的是one-hot
20201216
机器学习模型保存
下面的保存方式只适合catboost?
from sklearn.datasets import load_iris
from catboost import CatBoostClassifier
iris = load_iris()
cat_clf = CatBoostClassifier(iterations=100)
cat_clf.fit(iris.data, iris.target)
以python代码格式保存模型文件
cat_clf.save_model('catboost_model_file.py', format="python", export_parameters=None)
也可以保存以C++代码格式保存模型文件
cat_clf.save_model(‘catboost_model_file.cpp’, format=“cpp”, export_parameters=None)
直接查看保存到的python代码,部分信息如下
20201215
遇到pickle load 的时候 会报某些包不存在的错
很有可能是因为 模型保存和加载的时候分属于两台不一样的机子
环境不一样 只要在新的机子上 重新跑一下模型 重新保存一下就可以了
20201214
1500多列 34万行的数据 保存成csv 用了 8分钟 5.57GB
保存成 npy 11分钟 4.44GB
20201211
sql读出来的数据部分数据转换能成功但是全部转换不成功 说明里面有部分值是空或者其他
异常
从数据库读出的二进制文件存成csv到磁盘
读出来再转换成数值的时候会报错 而不写入磁盘前是可以转换的
那就用numpy保存好了
20201210
pickle文件可以用linux cat 查看
20201204
import pickle
from sklearn.externals import joblib
from sklearn.svm import SVC
from sklearn import datasets
#定义一个分类器
svm = SVC()
iris = datasets.load_iris()
X = iris.data
y = iris.target
#训练模型
svm.fit(X,y)
#1.保存成Python支持的文件格式Pickle
#在当前目录下可以看到svm.pickle
with open('svm.pickle','wb') as fw:
pickle.dump(svm,fw)
#加载svm.pickle
with open('svm.pickle','rb') as fr:
new_svm1 = pickle.load(fr)
# print (new_svm1.predict(X[0:1]))
#2.保存成sklearn自带的文件格式Joblib
joblib.dump(svm,'svm.pkl')
#加载svm.pkl
new_svm2 = joblib.load('svm.pkl')
print (new_svm2.predict(X[0:1]))
sklearn 模型保存
https://www.cnblogs.com/ywjfx/p/11152696.html
tensorflow 是 avro 格式
import numpy as np
arr=[1,2,3,4,5]
np.save(‘test’,arr)# 将数组以二进制格式保存到磁盘
#读取(读取出来会是保存时候的原格式吗?)
print(np.load(‘test.npy’))#[1 2 3 4 5]
npy文件
20200605
运行加载模型的时候会出现
模型有些参数没有 有些参数为多余
表明初始化的模型参数和加载进的模型二者的参数是不一致的
改成一致就好了
https://blog.youkuaiyun.com/weixin_38859557/article/details/84633185
_pickle.UnpicklingError: invalid load key, ‘H’.
两个文件由两种不同的模型生成
Python3:EOFError: Ran out of input
导入的文件为空
No such file or directory: ‘THUCNews/saved_dict/bert.ckpt’
没有这个路径 或者没有这个文件
本文详细介绍了多种机器学习模型的保存与加载方法,包括使用pickle、joblib、avro等工具,涵盖了SVM、LightGBM、CatBoost、Keras等模型的保存实践,以及在不同环境下模型加载可能遇到的问题及解决策略。
1498

被折叠的 条评论
为什么被折叠?



