如何将libsvm模型加载到Android中

时间:2015-04-27 15:20:37

标签: java android matlab libsvm

我已经使用MATLAB培训的模型生成了一个模型文件,我想从移动设备将其加载到Android中。

模型文件看起来像三个第一个SV&和params(应该是正确的)显示:

svm_type 0 
kernel_type 2
gamma 3.3636
coef0 0
nr_class 2
total_sv 1106
rho -0.7401
label 0 1
nr_sv 754 352
SV
0 1:8.02710 2:8.90538 3:9.56450 4:10.15383
0 1:7.87334 2:8.71629 3:9.41049 4:9.45693
0 1:8.52795 2:9.19652 3:10.17247 4:10.30913 ...

但是,当我使用svm.svm_load_model()加载它时,生成的模型为null:

FileReader fIn = new FileReader("mymodel.txt");
BufferedReader bufferedReader = new BufferedReader(fIn);
svm_model model = svm.svm_load_model(bufferedReader);

我似乎无法找到问题,有人得到了答案吗?

THX

编辑:我弄清楚错误是什么。从MATLAB输出的模型文件显然与Android load_model函数不完全兼容,因为键svm_type和kernel_type的值必须指定为字符串而不是数字(c_svc而不是0,rbf而不是2)。

2 个答案:

答案 0 :(得分:1)

编辑:我弄清楚错误是什么。从MATLAB输出的模型文件显然与Android load_model函数不完全兼容,因为键svm_type和kernel_type的值必须指定为字符串而不是数字(c_svc而不是0,rbf而不是2)。

答案 1 :(得分:0)

你可以这样做,因为libsvm是用C / C ++编写的。所以你可以使用一个包装器(由JNI或其他任何东西连接)来访问这个基于C的libsvm库"在Android

例如,您可以使用此包装器:https://github.com/yctung/AndroidLibSvm

加载程序后。去编辑" AndroidLibSvm / app / src / main / jni / jnilibsvm.cpp"文件。 在此文件中,您可以通过

加载模型文件
model=svm_load_model(modelFile);

您也可以根据需要访问其他libsvm函数