gpt4 book ai didi

c++ - 我需要通过 C++ 代码将这些文件传递给 WEKA 分类器

转载 作者:行者123 更新时间:2023-11-30 03:44:27 24 4
gpt4 key购买 nike

我正在编写一个 C++ 项目并在 C++ 代码中创建了 ARFF 文件,因此我需要使用 C++ 将这些文件传递给 WEKA 分类器。我尝试使用系统调用但遇到错误。我偶尔会使用对 WEKA 的系统调用来获取一些机器学习信息。首先,我想确保训练模型 (training.model) 是最新的。所以,在 main() 的开头,我调用:

system("\"java weka.classifiers.trees.J48 -t ML_data.arff -d training.model\"");

如何从 C++ 代码中调用 WEKA 分类器?

最佳答案

我认为错误是双引号:

system("\"java weka.classifiers.trees.J48 -t ML_data.arff -d training.model\"");
// ^^ ^^

这段代码应该如下所示:

system("java weka.classifiers.trees.J48 -t ML_data.arff -d training.model");

您似乎正在使用 \" 以便将双引号传递到 system() 调用中,但这太过分了并且会导致错误。(语法转义双引号是正确的,但您不需要将额外的引号传递给 system() 函数。)

这是一个最小的测试用例,用于显示使用您使用的语法在 Linux 上发生的情况:

#include <cstdlib>

int main(void)
{
system("\"ls -l\"");
}

输出:

sh: ls -l: command not found

另一方面,代码 system("ls -l"); 正确调用 ls -l 并在控制台中显示输出。

编辑:

就您的第二条错误消息而言:

Error: Could not find or load main class weka.classifiers.functions.Logistic

这是一个非常普遍的问题:What does “Could not find or load main class” mean? .您需要将类路径设置为指向您系统中的 weka.jar,例如,像这样(将确切路径更改为您的发行版中的路径):

system("java -cp /usr/share/java/weka.jar weka.classifiers.trees.J48 -t ML_data.arff -d training.model");

或者在命令行中(注意这里使用export命令)

export CLASSPATH=/usr/share/java/weka.jar:$CLASSPATH

./name_of_your_cpp_executable_file

或者将 CLASSPATH 放在你的 ~/.bashrc 中:

CLASSPATH=/usr/share/java/weka.jar:$CLASSPATH

export CLASSPATH

关于c++ - 我需要通过 C++ 代码将这些文件传递给 WEKA 分类器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35433854/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com