我在使用libsvm训练一个巨大的数据文件,结果生成的训练文件太大了。有没有办法将libsvm的模型文件保存为二进制格式?
回答:
如果您使用的是Matlab:下载svm_savemodel.c和svm_model_matlab.c(后者已包含在libsvm中,您可以尝试使用原始文件,如果不行,再尝试这个链接)到您的libsvm目录。编译Mex文件(mex svm_savemodel.c
),然后应该可以使用:
%保存模型
modelfid = fopen('model.bin','w');
model = fwrite(fid, model, 'int16');
%加载('model.mat');
fid = fopen('model.bin','rb');
model = fread(fid, model, 'int16');
svm_savemodel(model,'model.model');
如果您使用的是C++:有一个函数可以将模型保存到文件中:
int svm_save_model(const char *model_file_name, const struct svm_model *model);
更多详情请参见github。