【问题标题】:How setup libsvm in Android?如何在 Android 中设置 libsvm?
【发布时间】:2013-11-06 09:45:10
【问题描述】:

我试图在 android 中设置 libsvm 以检测加速度计的运动。我不知道如何在 android 中设置 libsvm 以及如何使用它。各位大侠能不能给点线索?

【问题讨论】:

    标签: android svm libsvm svmlight


    【解决方案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 文件和使用示例。

      【讨论】:

        猜你喜欢
        • 2013-11-20
        • 2013-03-23
        • 2012-12-06
        • 2016-02-22
        • 2019-06-04
        • 2023-03-11
        • 1970-01-01
        • 2017-01-12
        • 1970-01-01
        相关资源
        最近更新 更多