您好我想在WEKA库中使用神经网络进行简单的培训和测试。
但是,我发现它并不简单,它与库中的NaiveBayes类不同。
任何人都有例子如何在java代码中使用这个类?
答案 0 :(得分:8)
以下步骤可能会对您有所帮助:
从http://www.cs.waikato.ac.nz/ml/weka/downloading.html下载Weka。
从包中找到'Weka.jar'并添加到项目中。
Java Code Snippet
构建神经分类器
public void simpleWekaTrain(String filepath)
{
try{
//Reading training arff or csv file
FileReader trainreader = new FileReader(filepath);
Instances train = new Instances(trainreader);
train.setClassIndex(train.numAttributes() – 1);
//Instance of NN
MultilayerPerceptron mlp = new MultilayerPerceptron();
//Setting Parameters
mlp.setLearningRate(0.1);
mlp.setMomentum(0.2);
mlp.setTrainingTime(2000);
mlp.setHiddenLayers(“3?);
mlp.buildClassifier(train);
}
catch(Exception ex){
ex.printStackTrace();
}
}
设置参数的另一种方法,
mlp.setOptions(Utils.splitOptions(“-L 0.1 -M 0.2 -N 2000 -V 0 -S 0 -E 20 -H 3?));
其中,
L = Learning Rate
M = Momentum
N = Training Time or Epochs
H = Hidden Layers
etc.
评估培训数据,
Evaluation eval = new Evaluation(train);
eval.evaluateModel(mlp, train);
System.out.println(eval.errorRate()); //Printing Training Mean root squared Error
System.out.println(eval.toSummaryString()); //Summary of Training
应用K-Fold验证
eval.crossValidateModel(mlp, train, kfolds, new Random(1));
评估/预测未标记数据
Instances datapredict = new Instances(
new BufferedReader(
new FileReader(<Predictdatapath>)));
datapredict.setClassIndex(datapredict.numAttributes() – 1);
Instances predicteddata = new Instances(datapredict);
//Predict Part
for (int i = 0; i < datapredict.numInstances(); i++) {
double clsLabel = mlp.classifyInstance(datapredict.instance(i));
predicteddata.instance(i).setClassValue(clsLabel);
}
//Storing again in arff
BufferedWriter writer = new BufferedWriter(
new FileWriter(<Output File Path>));
writer.write(predicteddata.toString());
writer.newLine();
writer.flush();
writer.close();
答案 1 :(得分:1)
我在互联网上阅读了一些消息来源并意识到这一点 &#34;如果你想在WEKA库中使用NeuralNetwork分类器,那么这种方法不是使用给定的NeuralNetwork类,而应该是&#34; MultilayerPerceptron&#34;类&#34;
它有点棘手,耗费我的时间。哦WEKA为什么? T__T
希望它对任何正在努力解决这个问题的人都有用。
http://weka.8497.n7.nabble.com/Multi-layer-perception-td2896.html
聚苯乙烯。如果我错了,请纠正!