如何通过Java在数据集上训练Weka AI

我目前正在使用Java的Weka API编写一个AI。我使用的是MNIST手写数字数据集来训练我的AI。AI将在手写数字的图像上进行训练,然后输出该数字是否为0、1、2等。每个“图像”是一个28×28的数组,每个位置的数值范围从0到255,用以表示灰度颜色。我使用自己编写的代码将数组转换为ARFF文件格式:

public void createArffFromDataset(String pathName, MnistDataset dataset) throws IOException {        File file = new File(pathName);        file.delete();        file.createNewFile();        FileWriter writer = new FileWriter(pathName);        writer.append("@RELATION MnistDataset\n");        for (int r = 1; r <= 28; r++) {            for (int c = 1; c <= 28; c++) {                writer.append("\n@ATTRIBUTE r").append(String.valueOf(r)).append("c").append(String.valueOf(c)).append(" NUMERIC");            }        }        writer.append("\n@ATTRIBUTE class {0,1,2,3,4,5,6,7,8,9}\n\n@DATA");        for (MnistMatrix i : dataset.dataset) {            writer.append("\n");            for (int r = 0; r < 28; r++) {                for (int c = 0; c < 28; c++) {                    writer.append(String.valueOf(i.matrix[r][c])).append(",");                }            }            writer.append(String.valueOf(i.label));        }        writer.close();    }

这将数据集加载到一个看起来像这样的Arff文件中:

@RELATION MnistDataset@ATTRIBUTE r1c1 NUMERIC@ATTRIBUTE r1c2 NUMERIC@ATTRIBUTE r1c3 NUMERIC...@ATTRIBUTE r24c22 NUMERIC@ATTRIBUTE r24c23 NUMERIC@ATTRIBUTE r24c24 NUMERIC@ATTRIBUTE class {0,1,2,3,4,5,6,7,8,9}@DATA(Data goes here)

然而,在我将数据集转换为Arff格式后,我找不到如何在数据集上训练AI的方法。我查找了文档,但没有找到解释使用什么命令/如何使用命令的文档。提供一些文档链接将不胜感激,但我对机器学习还比较新手,可能无法理解一些资料。


回答:

Weka API的使用方法在您安装的Weka手册(PDF)中有详细说明。

或者,您可以查看Weka维基文章在您的Java代码中使用Weka

最后,不是通过输出文本来创建ARFF文件,您应该直接使用Weka API生成一个weka.core.Instances对象。这样,您甚至不需要生成文件,因为您可以使用Instances对象来训练您的分类器。请参阅Weka维基文章创建ARFF文件,了解如何在内存中创建数据结构。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注