0

我的应用程序包含一个学习任务,它是SVM 分类。经过艰苦的研究,我了解了 SVM 的基础知识,并且还通过命令行尝试了一些使用libSVM工具的示例。但是,我的应用程序部署在客户端-服务器架构中:

  • 训练集存储在负责生成 SVM 模型的服务器端。
  • 然后将 SVM 模型发送到客户端并用于预测
  • 客户端是安卓移动设备

我的问题是如何在Java代码中使用libSVM而不是通过命令行运行它?

4

4 回答 4

1

I found this project and it works well.

LIBSVM on Android platform with a native library for better performance

于 2014-09-17T08:09:56.863 回答
1

由于文档有点少,最好的方法可能是查看 libsvm 发行版中命令行工具 svm_predict.java 的源代码。

例如从文件中加载 svm 模型:

svm_model model = svm.svm_load_model("filename");

然后你可以做一个预测:

double v = svm.svm_predict(model, x);

svm_predict.java 中的predict()方法详细介绍了如何设置 x。

于 2013-06-09T14:08:06.740 回答
1

您可以使用包含此项目的方法进行 Android 开发

安卓 jni 环境的 LIBSVM

于 2013-11-06T04:05:07.820 回答
0

最通用的多语言方法是实现等式以获得给定经过训练的 SVM 的样本的决策分数。这将适用于 Java、C、Dalvik、Objective C,无论您现在或将来何时使用。

LIBSVM 生成的模型文件有三个重要的东西:

  • 拉格朗日乘数 (alpha)
  • 支持向量的标签(y_i)
  • 支持向量(来自用于描述决策面的训练集的数据点),即 x_i's。

给定一个新点 x,你计算

$\sum_{i=0}^{Nsv} y_i \alpha_i K(x,x_i)$

其中一切都如上所述,K 是您用来训练的内核。

并且该决策只是该决策值的符号(例如 x 的 sgn(f(x)))

于 2013-06-11T02:26:03.260 回答