【发布时间】:2023-01-17 08:50:06
【问题描述】:
我尝试使用 Weka 在 Java 中构建机器学习模型。 这是我的代码:
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.util.ArrayList;
import weka.classifiers.Evaluation;
import weka.classifiers.functions.MultilayerPerceptron;
import weka.classifiers.evaluation.Prediction;
import weka.core.Instances;
import weka.core.converters.ConverterUtils.DataSource;
public class multiLayerExample {
public static void main(String[] args) throws Exception {
String filename = "../train.arff";
DataSource source = new DataSource(filename);
Instances train = source.getDataSet();
int cid1 = train.numAttributes() - 1;
train.setClassIndex(cid1);
Instances validation = DataSource.read(".../validation.arff");
int cid2 = validation.numAttributes() - 1;
validation.setClassIndex(cid2);
Instances test = DataSource.read("../test1.arff");
int cid3 = test.numAttributes() - 1;
test.setClassIndex(cid3);
MultilayerPerceptron tree = new MultilayerPerceptron();
tree.buildClassifier(train);
Evaluation eval = new Evaluation(train);
eval.evaluateModel(tree, validation);
System.out.println(eval.toSummaryString("\nResults_RF\n\n", false));
// System.out.println(eval.toClassDetailsString());
// System.out.println(eval.toMatrixString());
ArrayList<Prediction> al = eval.predictions();
ArrayList<String[]> as = new ArrayList<String[]>(al.size());
for (int i = 0; i < al.size(); i++) {
String[] s = new String[1];
s[0] = al.get(i).toString();
s[0] = s[0].substring(9, 11);
as.add(s);
System.out.println(s);
}
ArrayList<String[]> li = new ArrayList<String[]>(al.size());
li.addAll(as);
System.out.println(li.addAll(as));
// String csv = "../output.csv";
// CSVSaver writer = new CSVSaver(new FileWriter(csv));
//
// writer.writeAll(li);
// writer.close();
//
//Storing again in csv
BufferedWriter writer1 = new BufferedWriter(
new FileWriter("../output.csv"));
System.out.print(li);
writer1.write(li.toString());
writer1.newLine();
writer1.flush();
writer1.close();
}
}
我遇到的问题是: CSVSaver writer = new CSVSaver(new FileWriter(csv)); 出现以下错误消息:“CSVSaver 无法解析为类型” 如果我将其注释掉并使用在其下方插入的方法(//再次存储在 csv 中),它会在输出 csv 中插入以下数据: “[[Ljava.lang.String;@53f65459, [Ljava.lang.String;@3b088d51, [Ljava.lang.String;@1786dec2,...”
我能做什么,让它发挥作用? 提前感谢您的帮助!
我尝试编写一个新的 CSV 保存程序(请参阅://再次存储在 csv 中)但输出不可读。 我希望将预测写入输出文件。格式是所有数字(双精度)。
【问题讨论】:
标签: csv machine-learning weka perceptron