数组存储
ref:https://blog.csdn.net/Dust_Evc/article/details/127986584
.npy
文件是numpy专用的二进制文件
np.save("D:/path/npp.npy", var)
:数组var
会以未压缩的原始二进制格式保存在扩展名为.npy
的文件中。
numpy.save(file, arr, allow_pickle=True, fix_imports=True)
—— 参数 ——
file
:数据被保存到的文件或文件名。如果文件是一个字符串或路径,如果它还没有扩展名,将在文件名上添加一个.npy扩展名。如果文件是一个文件对象,那么文件名将不会改变。
allow_pickle
: 允许使用Python pickles保存对象数组。不允许pickles的原因包括安全(加载pickled数据可以执行任意代码)和可移植性(pickled对象在不同的Python安装中可能无法加载)。默认值True
。
fix_imports
:只有在强迫Python 3上对象数组中的对象以Python 2兼容的方式被腌制时才有用。
arr
:要保存的阵列数据。返回:将输入的数组存储在一个以npy为扩展名(.npy)的磁盘文件中。
numpy.load()
:读取 .npy 文件的数据,直接转换为 numpy 数组
numpy.load(file, mmap_mode=None, allow_pickle=True, fix_imports=True, encoding=’ASCII’)
—— 参数 ——
file
:类文件对象,字符串,或pathlib.Path.要读取的文件。类文件对象必须支持 seek() 和 read() 方法。
mmap_mode
:如果不是无,则使用给定的模式对文件进行内存映射(详细的内存映射模式见numpy.memmap)。 模式的描述)。
allow_pickle
:允许加载存储在npy文件中的腌制对象数组。
fix_imports
:只有在Python3上加载Python2生成的pickled文件时有用,其中包括包含对象数组的npy/npz文件。
encoding
:只有在Python3中加载Python 2生成的pickled文件时有用,其中包括包含对象数组的npy/npz文件。
返回:存储在文件中的数据。对于.npz文件,返回的NpzFile类的实例必须被关闭,以避免文件描述符的泄露。
- 注意:如果报错
Object arrays cannot be loaded when allow_pickle=False
,需要改为如下:
np.load(path, allow_pickle=True)
sklearn模型存储
ref:http://t.zoukankan.com/zichun-zeng-p-4761602.html
使用python的机器学习包sklearn的时候,如果训练集是固定的,我们往往想要将一次训练的模型结果保存起来,以便下一次使用,这样能够避免每次运行时都要重新训练模型时的麻烦。
在python里面,有一个joblib
可以实现将模型保存,并将保存后的模型取出用于不同的测试集:
from sklearn import svm
from sklearn.externals import joblib
#训练模型
clf = svc = svm.SVC(kernel='linear')
rf=clf.fit(array(trainMat), array(listClasses))
#保存模型
joblib.dump(rf,'rf.model')
#加载模型
RF=joblib.load('rf.model')
#应用模型进行预测
result=RF.predict(thsDoc)
- 需要注意:这里执行
joblib.dump()
之后,有可能还会生成若干个以rf.model_XX.npy为命名格式的文件,这有可能是用于保存模型中的系数等的二进制文件。其具体生成的文件的个数还会随调用到的分类器的不同,以及分类器中迭代次数的参数的不同而变,有时候会生成几个,有时候会生成几百个。