Weka 运行时错误
Weka runtime error
我正在尝试复制我的训练数据集的第一个属性,并从测试集中复制相应的属性以便记账。我的代码编译成功。但是我无法运行它。
当 运行 java WekaRF
时出现以下错误
Exception in thread "main" java.lang.NoClassDefFoundError: weka/core/converters/CSVLoader
at WekaRF.main(WekaRF.java:17)
Caused by: java.lang.ClassNotFoundException: weka.core.converters.CSVLoader
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
如果我运行, java -cp weka-3-8-1/weka.jar WekaRF, 我得到
Error: Could not find or load main class WekaRF
我的代码如下
import java.io.*;
import java.util.Random;
import weka.classifiers.Evaluation;
import weka.classifiers.trees.RandomForest;
import weka.core.Instances;
import weka.filters.unsupervised.attribute.Remove;
import weka.core.converters.*;
public class WekaRF {
public static void main(String[] args) {
int percent = 60;
Instances data = null;
try {
CSVLoader loader = new CSVLoader();
loader.setSource(new File("../../rf.csv"));
data = loader.getDataSet();
} catch (Exception e) {
e.printStackTrace();
return;
}
int TrainSize = (int) Math.round(data.numInstances() * percent/ 100);
int TestSize = data.numInstances() - TrainSize;
Instances Train = new Instances(data, 0, TrainSize);
Instances Test = new Instances(data, TrainSize, TestSize);
System.out.println(Test.attribute(0).name());
Remove remove = new Remove();
String[] options = new String[2];
options[0] = "-R";
options[1] = "1";
remove.setOptions(options);
remove.setInputFormat(data2);
Test = Filter.useFilter(Test, remove);
Train.setClassIndex(Train.numAttributes() - 1);
}
}
您的 class 路径不包括当前目录,因此 java 没有看到您的 WekaRF
class。
尝试使用 java -cp .;weka-3-8-1/weka.jar WekaRF
代替。
注意 -cp
参数开头的点。它表示当前目录。
更新:用于分隔各个 class 路径条目的字符取决于操作系统。 Windows 使用 ;
而大多数其他系统使用 :
。可以通过查询 java.io.File::pathSeparator 字段来检索实际路径分隔符。
我正在尝试复制我的训练数据集的第一个属性,并从测试集中复制相应的属性以便记账。我的代码编译成功。但是我无法运行它。
当 运行 java WekaRF
时出现以下错误Exception in thread "main" java.lang.NoClassDefFoundError: weka/core/converters/CSVLoader
at WekaRF.main(WekaRF.java:17)
Caused by: java.lang.ClassNotFoundException: weka.core.converters.CSVLoader
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
如果我运行, java -cp weka-3-8-1/weka.jar WekaRF, 我得到
Error: Could not find or load main class WekaRF
我的代码如下
import java.io.*;
import java.util.Random;
import weka.classifiers.Evaluation;
import weka.classifiers.trees.RandomForest;
import weka.core.Instances;
import weka.filters.unsupervised.attribute.Remove;
import weka.core.converters.*;
public class WekaRF {
public static void main(String[] args) {
int percent = 60;
Instances data = null;
try {
CSVLoader loader = new CSVLoader();
loader.setSource(new File("../../rf.csv"));
data = loader.getDataSet();
} catch (Exception e) {
e.printStackTrace();
return;
}
int TrainSize = (int) Math.round(data.numInstances() * percent/ 100);
int TestSize = data.numInstances() - TrainSize;
Instances Train = new Instances(data, 0, TrainSize);
Instances Test = new Instances(data, TrainSize, TestSize);
System.out.println(Test.attribute(0).name());
Remove remove = new Remove();
String[] options = new String[2];
options[0] = "-R";
options[1] = "1";
remove.setOptions(options);
remove.setInputFormat(data2);
Test = Filter.useFilter(Test, remove);
Train.setClassIndex(Train.numAttributes() - 1);
}
}
您的 class 路径不包括当前目录,因此 java 没有看到您的 WekaRF
class。
尝试使用 java -cp .;weka-3-8-1/weka.jar WekaRF
代替。
注意 -cp
参数开头的点。它表示当前目录。
更新:用于分隔各个 class 路径条目的字符取决于操作系统。 Windows 使用 ;
而大多数其他系统使用 :
。可以通过查询 java.io.File::pathSeparator 字段来检索实际路径分隔符。