如何在 Android 中设置 libsvm?
Posted
技术标签:
【中文标题】如何在 Android 中设置 libsvm?【英文标题】:How setup libsvm in Android? 【发布时间】:2013-11-06 09:45:10 【问题描述】:我试图在 android 中设置 libsvm 以检测加速度计的运动。我不知道如何在 android 中设置 libsvm 以及如何使用它。各位大侠能不能给点线索?
【问题讨论】:
【参考方案1】:您不需要设置 libsvm,只需使用库包装器来为您用于开发android 应用程序的语言(我猜是Java?)。 Wrapper 包含在正式版本中。它还包括这个特定库的使用示例。这里没有什么特别的——如果你知道如何开发 android 应用程序,那么使用额外的库应该不是问题。如果您不知道如何开发这样的应用程序 - 那么从动作识别开始是个坏主意。这同样适用于将 SVM 用于任何事情的能力。如果您从未使用过 SVM,最好从更简单的东西开始,例如编写应用程序的“非移动”版本并熟悉此模型。否则失败的可能性很大。
【讨论】:
嗨@lejlot。谢谢您的回复。你能帮我在 Android 中设置 libsvm。我有 Adroid 开发经验,并且我在我的电脑中使用 libsvm 还可以从数据集中提取模式并进行一些预测。【参考方案2】:对不起,我之前错误的答案格式
由于 libsvm 是用 C 编写的,您可以轻松地通过 JNI 接口包装代码并在 Java 中使用 libsvm。
包装器位于:https://github.com/yctung/AndroidLibSvm
例如,一旦你在Android studio中导入这个项目,你就可以调用
jniSvmTrain(String options);
使 svm 训练与原始 libsvm 的界面相同。
如果你看代码,它只是 libsvm 中原始“svm-train.c”的包装
#include "./libsvm/svm-train.h"
// helper function to be called in Java for making svm-train
extern "C" void Java_edu_umich_eecs_androidlibsvm_MainActivity_jniSvmTrain(JNIEnv *env, jobject obj, jstring cmdIn)
const char *cmd = env->GetStringUTFChars(cmdIn, 0);
debug("jniSvmTrain cmd = %s", cmd);
std::vector<char*> v;
// add dummy head to meet argv/command format
std::string cmdString = std::string("dummy ")+std::string(cmd);
cmdToArgv(cmdString, v);
// make svm train by libsvm
svmtrain::main(v.size(),&v[0]);
// free vector memory
for(int i=0;i<v.size();i++)
free(v[i]);
// free java object memory
env->ReleaseStringUTFChars(cmdIn, cmd);
【讨论】:
【参考方案3】:“设置”我认为您要求将 LIBSVM 作为库提供的 jar 文件添加到您的 android studio 项目中。你可以看看这里:
Android Studio: Add jar as library?
在 LIBSVM 网站上,您可以下载一个 zip 文件,其中包含 JAVA jar 文件和使用示例。
【讨论】:
以上是关于如何在 Android 中设置 libsvm?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android 中设置 AlertDialog 的大小? [复制]
如何使用 Ionic\Cordova 在 android 中设置图标和启动画面