在 Linux 上运行 WEKA
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/6635710/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
run WEKA on Linux
提问by leba-lev
I have downloaded and unzipped the following WEKA version weka-3-4-19. This is on a linux operating system. I wish to use WEKA through the command line, however on executing
我已经下载并解压了以下 WEKA 版本 weka-3-4-19。这是在Linux操作系统上。我希望通过命令行使用 WEKA,但是在执行时
java weka.classifiers.tress.j48.J48
I get the following error message:
我收到以下错误消息:
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.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.
Can someone help me resolve this? Thank you.
有人可以帮我解决这个问题吗?谢谢你。
Edit1:
编辑1:
On trying the java -jar weka.jar command
在尝试 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.
Edit 2:
编辑2:
On trying java.weka.classifiers.trees.J48
尝试 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.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.
Edit 3:
编辑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.
采纳答案by Grzegorz Szpetkowski
That simply means weka.classifiers.tress.j48.J48
class is not in classpath. You can write java
command with -classpath
switch or set CLASSPATH (permanent) variable. Another way is to use -jar
switch as pointed by @jberg.
这只是意味着weka.classifiers.tress.j48.J48
class 不在classpath 中。您可以java
使用-classpath
switch编写命令或设置 CLASSPATH(永久)变量。另一种方法是使用-jar
@jberg 指出的开关。
EDIT:
编辑:
As I checked (I downloaded Weka 3-4-19 from that site) there is definitely no weka.classifiers.tress.j48.J48
class in weka.jar
package. Probably you are looking for:
当我检查时(我从该站点下载了 Weka 3-4-19 )weka.classifiers.tress.j48.J48
,weka.jar
包中肯定没有类。可能您正在寻找:
java weka.classifiers.trees.J48
For example:
例如:
$ 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.
...
回答by jberg
I haven't used WEKA on linux, but I think it is just packaged as a jar file, so you want to:
我没有在 linux 上使用过 WEKA,但我认为它只是打包成一个 jar 文件,所以你要:
java -jar weka.jar
java -jar weka.jar
You can also use the weka source jars to use the classifiers in your own code by including it in your build path like you would other jars.
您还可以使用 weka 源 jars 在您自己的代码中使用分类器,方法是将其包含在您的构建路径中,就像其他 jars 一样。
回答by Alasdair
This "weka.classifiers.trees.j48.J48" is a typo in the Weka documentation. It's should be this: "weka.classifiers.trees.J48"
这个“weka.classifiers.trees.j48.J48”是 Weka 文档中的一个错字。应该是这样的:“weka.classifiers.trees.J48”
And instead of setting the $CLASSPATH the alternative is just to put:
而不是设置 $CLASSPATH 替代方法只是放置:
java -cp /pathto/weka.jar weka.classifiers.trees.J48
Also, you might want to give it more memory to play with, to speed things up:
此外,您可能想给它更多的内存来玩,以加快速度:
java -Xmx1G -cp /pathto/weka.jar weka.classifiers.trees.J48
For running a classifier (like you are attempting to do) you need to at least give it some data, which must already be converted to ARFF format.
要运行分类器(就像您尝试做的那样),您至少需要给它一些数据,这些数据必须已经转换为 ARFF 格式。
To run a test on some data enter:
要对某些数据运行测试,请输入:
java -Xmx1G -cp /path/to/weka.jar weka.classifiers.trees.J48 -t /path/to/whatever.arff
-t is for training file.
-t 用于训练文件。
See here: Weka Primer
见这里: Weka Primer
回答by hhh
I run the Linux Developer version in macOS. You can copy the .bash_profile
below and modify to your needs.
我在 macOS 中运行 Linux Developer 版本。您可以复制.bash_profile
以下内容并根据需要进行修改。
As I answered here, you can just put the following to your ~/.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
after this and refreshing the terminal, you should be able to run the following command
在此之后并刷新终端,您应该能够运行以下命令
java weka.classifiers.trees.J48 -t $WEKAINSTALL/data/iris.arff