在读取一个训练好的模型时:
model = pickle.load(open('model1.pkl', 'rb'))
报错:pickle.load(open('y1_model.pkl', 'rb'))
网上查了一些方法还以为训练的那个模型源代码有问题,后来发现是读取方式有问题,将pickle.load()该为joblib.load()就可以了
后来和对方确认,对方确实是使用joblib保存模型为pkl格式的。
在此,多说两句,对训练好的模型进行保存,方便后续直接调取预测使用,有两种保存方式:
'''方法一:joblib'''
import joblib
joblib.dump(model, "model1.pkl") #保存
model = joblib.load(open('model1.pkl', 'rb')) #加载
pre = model.predict(X_test)
'''方法一:pickle'''
import pickle
#保存
pickle.dump(model, open('model1.pkl', 'wb'))
# 加载
model = pickle.load(open('model1.pkl', 'rb'))
Y_pred = model.predict(X_test)
两种不同的保存方式都可将模型保存成pkl文件,但是在调用的时候要根据保存的不同方法选择对应的调用方法,不然就会报错:UnpicklingError: invalid load key, '\x00'.