我需要通过c+将此文件传递给WEKA分类器+;代码 我正在编写C++项目,并在C++代码中创建了ARFF文件,所以我需要使用C++将这些文件传递给WEKA分类器。 我尝试使用系统调用,但遇到错误。 我将偶尔使用系统调用WEKA来获取一些机器学习信息。首先,我想确保培训模型(training.model)是最新的。因此,在main()的开头,我调用: system("\"java weka.classifiers.trees.J48 -t ML_data.arff -d training.model\""); 我如何从C++代码中调用WEKA分类器?< P>我认为错误是双引号: system("\"java weka.classifiers.trees.J48 -t ML_data.arff -d training.model\""); // ^^ ^^
这段代码应该如下所示:我需要通过c+将此文件传递给WEKA分类器+;代码 我正在编写C++项目,并在C++代码中创建了ARFF文件,所以我需要使用C++将这些文件传递给WEKA分类器。 我尝试使用系统调用,但遇到错误。 我将偶尔使用系统调用WEKA来获取一些机器学习信息。首先,我想确保培训模型(training.model)是最新的。因此,在main()的开头,我调用: system("\"java weka.classifiers.trees.J48 -t ML_data.arff -d training.model\""); 我如何从C++代码中调用WEKA分类器?< P>我认为错误是双引号: system("\"java weka.classifiers.trees.J48 -t ML_data.arff -d training.model\""); // ^^ ^^,c++,weka,system-calls,C++,Weka,System Calls,这段代码应该如下所示: system("java weka.classifiers.trees.J48 -t ML_data.arff -d training.model"); 您似乎正在使用\“将双引号传递到system()调用中,但这太多,并导致错误。(转义双引号的语法是正确的,但不需要将附加引号传递到system()函数。) 下面是一个简单的测试用例,用您使用的语法展示Linux上发生的情况: #include <cstdlib> int main(vo
system("java weka.classifiers.trees.J48 -t ML_data.arff -d training.model");
您似乎正在使用\“
将双引号传递到system()
调用中,但这太多,并导致错误。(转义双引号的语法是正确的,但不需要将附加引号传递到system()
函数。)
下面是一个简单的测试用例,用您使用的语法展示Linux上发生的情况:
#include <cstdlib>
int main(void)
{
system("\"ls -l\"");
}
或者在命令行中(注意此处使用的export
命令)
export CLASSPATH=/usr/share/java/weka.jar:$CLASSPATH
/name\u您的\u cpp\u可执行文件的\u
或者将CLASSPATH
放在~/.bashrc
中:
CLASSPATH=/usr/share/java/weka.jar:$CLASSPATH
导出类路径
发布您在执行此代码时收到的确切错误,或您观察到的使您认为遇到错误的行为。我的建议解决了问题吗?我真的很好奇。是的,但Linux仍然给我错误:无法找到或加载主类weka.classifiers.functions.LogisticOK我想我知道这是什么,请参阅过时的答案。现在好了吗?设置类路径解决问题了吗?
system("java -cp /usr/share/java/weka.jar weka.classifiers.trees.J48 -t ML_data.arff -d training.model");