【问题标题】:Is there a way to use the SVM model (trained in matlab) in android studio?有没有办法在 android studio 中使用 SVM 模型(在 matlab 中训练)?
【发布时间】:2016-06-02 20:50:45
【问题描述】:

我正在尝试将数据处理与 Android 应用程序开发相结合。我已经使用 libsvm 在 matlab 中训练了一个 svm 模型,我正在开发的 android 应用程序可以从设备获取数据特征。我想要的是在android studio中使用这个svm模型来预测新的数据进来。有没有办法只使用模型而不是实现整个svm算法是android studio?谢谢你:) p.s。模型是 .mat 文件。

【问题讨论】:

  • .mat 文件是专有的 Matlab 格式文件,我认为在 Matlab 之外打开和读取此类文件相当困难(不过,Wolfram 和 R 有一些技巧),除非你在你的电脑上安装了 Matlab android device :/ 您可能需要考虑将其保存为更“开放”的格式,例如 .txt。这个链接也可以帮助mathworks.com/matlabcentral/answers/…

标签: android matlab svm


【解决方案1】:

为了进行预测,您需要保存支持向量 x_i、相关的对偶变量(您从 libsvmrtrain 获得的带符号的 alpha)和偏差(您从 @ 获得的 -rho 987654327@)。然后,为了对新样本 x 进行预测,您计算:

其中K 是用于学习的内核。请注意libsvm 将标签y_i 嵌入到对偶变量中,因此您可以只使用alphas。

最简单的方法是将您需要的所有变量保存到一个文本文件(或一些您可以在移动设备上轻松读取的二进制文件)。

【讨论】:

  • 谢谢!我会试试看:)你能给我这个公式的链接吗?我确定我以前见过这个,但不记得这些参数代表什么......
  • 它不是来自链接,它只是 SVM 理论。在 sv_coeffrhoSVs 字段中分别调用 svmtrain 后,参数 alpha、rho 和 xi 在 Matlab 的输出结构中给出
  • 哦!还有一个问题,如何计算核函数(我使用的模型是线性的)?换句话说,是 ΣK(x,xi) = SVs' * x 还是 ΣK(x,xi) = x' * SVs?我有多维数据。
  • 当你使用 libsvm 时,你必须传递一个输入参数来设置内核,这是 -t 选项,如果你不这样做,那么默认是高斯内核(又名 RBF),所以当你做出一个预测,你必须使用相同的内核和相同的参数(RBF 有一个由-g 传入的参数,如果你不设置它也有一个默认值)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-13
  • 2016-12-14
  • 2019-11-21
  • 2020-03-24
  • 1970-01-01
  • 2019-01-31
  • 2017-10-26
相关资源
最近更新 更多