запустить WEKA в Linux - PullRequest
       5

запустить WEKA в Linux

2 голосов
/ 09 июля 2011

Я скачал и распаковал следующую версию WEKA weka-3-4-19.Это на операционной системе Linux.Я хочу использовать WEKA через командную строку, однако при выполнении

java weka.classifiers.tress.j48.J48

я получаю следующее сообщение об ошибке:

Exception in thread "main" java.lang.NoClassDefFoundError: weka/classifiers/tress/j48/J48
Caused by: java.lang.ClassNotFoundException: weka.classifiers.tress.j48.J48
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: weka.classifiers.tress.j48.J48.  Program will exit.

Может кто-нибудь помочь мне решить эту проблему?Спасибо.


Edit1:

При попытке выполнить команду java -jar weka.jar

java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
    at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:159)
    at java.awt.Window.<init>(Window.java:432)
    at java.awt.Frame.<init>(Frame.java:403)
    at javax.swing.JFrame.<init>(JFrame.java:202)
    at weka.gui.GUIChooser.<init>(GUIChooser.java:98)
    at weka.gui.GUIChooser.main(GUIChooser.java:285)

No X11 DISPLAY variable was set, but this program performed an operation which requires it.

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

При попытке java.weka.classifiers.trees.J48

Exception in thread "main" java.lang.NoClassDefFoundError: weka/classifiers/tress/J48
Caused by: java.lang.ClassNotFoundException: weka.classifiers.tress.J48
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: weka.classifiers.tress.J48.  Program will exit.

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

{cslinux2:~/weka-3-4-19} echo $CLASSPATH
/people/cs/j/jld082000/weka-3-4-19/weka.jar:
{cslinux2:~/weka-3-4-19} java weka.classifiers.trees.J48

Weka exception: No training file and no object input file given.

General options:

-t <name of training file>
    Sets training file.
-T <name of test file>
    Sets test file. If missing, a cross-validation will be performed on the training data.

Ответы [ 4 ]

10 голосов
/ 09 июля 2011

Это просто означает, что weka.classifiers.tress.j48.J48 класс не находится в classpath . Вы можете написать команду java с помощью переключателя -classpath или установить переменную CLASSPATH (постоянную). Другой способ - использовать переключатель -jar, как указано @ jberg.

EDIT:

Когда я проверил (я скачал Weka 3-4-19 с этого сайта ), в пакете weka.jar определенно нет класса weka.classifiers.tress.j48.J48. Вероятно, вы ищете:

java weka.classifiers.trees.J48

Например:

$ export CLASSPATH=/home/grzegorz/weka-3-4-19/weka.jar:.
$ echo $CLASSPATH 
/home/grzegorz/weka-3-4-19/weka.jar:.
$ java weka.classifiers.trees.J48

Weka exception: No training file and no object input file given.

General options:

-t <name of training file>
    Sets training file.
...
8 голосов
/ 31 октября 2011

Это "weka.classifiers.trees.j48.J48" является опечаткой в ​​документации Weka. Это должно быть так: "weka.classifiers.trees.J48"

И вместо установки $ CLASSPATH альтернативой будет просто поставить:

java -cp /pathto/weka.jar weka.classifiers.trees.J48

Кроме того, вы можете захотеть выделить ему больше памяти для ускорения:

java -Xmx1G -cp /pathto/weka.jar weka.classifiers.trees.J48

Для запуска классификатора (как вы пытаетесь это сделать) вам нужно как минимум предоставить ему некоторые данные, которые уже должны быть преобразованы в формат ARFF.

Чтобы запустить тест для некоторых данных, введите:

java -Xmx1G -cp /path/to/weka.jar weka.classifiers.trees.J48 -t /path/to/whatever.arff

-t для учебного файла.

Смотрите здесь: Weka Primer

1 голос
/ 09 июля 2011

Я не использовал WEKA в linux, но я думаю, что он просто упакован в jar-файл, поэтому вы хотите:

java -jar weka.jar

Вы также можете использовать исходные jar-файлы weka для использования классификаторов в своем собственном коде, включив его в путь сборки, как и другие jar-файлы.

0 голосов
/ 30 июля 2017

Я запускаю версию Linux Developer в macOS.Вы можете скопировать .bash_profile ниже и изменить в соответствии с вашими потребностями.

Поскольку я ответил здесь , вы можете просто добавить следующее к вашему ~/.bash_profile

export R_HOME="/Applications/R.app/Contents/MacOS/R"    #for WEKA MLR R plugin 
export CLASSPATH="/Applications/weka-3-9-1/weka.jar"    #for WEKA commandline
export WEKAINSTALL="/Applications/weka-3-9-1"

export WEKA_HOME="/Applications/weka-3-9-1"
export CLASSPATH=$CLASSPATH;$WEKA_HOME/weka.jar
export HEAP_OPTION=-Xms4096m -Xmx8192m
export JAVA_COMMAND java $HEAP_OPTION

после этого и обновив терминал, вы сможете запуститьследующая команда

java weka.classifiers.trees.J48 -t $WEKAINSTALL/data/iris.arff
...