如何在 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 应用中设置全息黑暗主题?

如何在android的提示文本中设置字母间距

如何在 Android 中设置 AlertDialog 的大小? [复制]

如何使用 Ionic\Cordova 在 android 中设置图标和启动画面

Android:如何在 android constraintLayout 中设置视图的最大宽度?

Android:如何在 android constraintLayout 中设置视图的最大宽度?