мне нужно передать эти файлы в классификаторы WEKA с помощью кода C ++

Я пишу проект на C ++ и создал файлы ARFF в коде C ++, поэтому мне нужно передать эти файлы в классификаторы WEKA с использованием C ++.
Я пытался использовать системный вызов, но обнаружил ошибки.
Я собираюсь иногда использовать системный вызов в WEKA, чтобы получить информацию о машинном обучении. Сначала я хотел бы убедиться, что модель обучения (training.model) до даты. Итак, в начале main(), Я звоню:

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

Как я могу вызвать классификатор WEKA из кода C ++?

1

Решение

Я думаю, что ошибка с двойными кавычками:

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: команда не найдена

С другой стороны, код system("ls -l"); правильно звонит ls -l и отображает вывод в консоли.

Редактировать:

Насколько ваше второе сообщение об ошибке идет:

Ошибка: не удалось найти или загрузить основной класс weka.classifiers.functions.Logistic

Это очень распространенная проблема: Что означает «Не удалось найти или загрузить основной класс»?. Вы должны установить classpath, чтобы указать 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

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]