在ARFF文件中告诉Weka预测哪些属性?

我试图通过命令行让Weka进行预测,但我担心自己可能做错了。我读了数据挖掘的书,并在他们的网站上搜索了相关文档,但找到的信息充其量是模糊的,所以我希望你能帮我。

首先,我创建了一个训练集(train.arff)。这是一个样本:

@relation test@attribute 'A' {0,1}@attribute 'B' {0,1}@attribute 'C' {0,1}@attribute 'D' {0,1}@attribute 'E' {0,1}@attribute 'F' {0,1}@data0,0,0,0,0,00,0,0,0,0,0...

然后我创建了一个需要通过预测来完成的数据集(test.arff):

@relation test@attribute 'A' {0,1}@attribute 'B' {0,1}@attribute 'C' {0,1}@attribute 'D' {0,1}@attribute 'E' {0,1}@attribute 'F' {0,1}@data0,?,0,0,0,00,?,0,0,0,0...

“?”标记了应该被预测的属性。

最后,我尝试通过在命令行运行以下命令来获取预测结果:

java weka.classifiers.trees.J48 -t train.arff -T test.arff -p 0

它产生了以下输出:

=== Predictions on test data === inst#     actual  predicted error prediction     1        2:1        2:1       0.939     2        2:1        2:1       0.939

然后我取了预测列中“:”后的数字作为标记为inst#的数据行的预测值。

我的问题如下:

  1. 这是正确的吗?我对“?”感到担忧,因为我读到它可能会被填补(尽管这可能只在学习阶段发生)。

  2. Weka支持多重预测吗?无论标记了多少个“?”字段,我总是得到相同的表格,每个实例只有一个预测值。

  3. Weka能生成一个完整的(预测的)ARFF文件,还是我必须从它的结果中自己构建这个文件?

如果我错过了什么明显的东西,提前道歉,任何指向相关文档的指导都将不胜感激。

提前感谢!


回答:

“?”是一个未知值的通用标记。它可以用于训练和测试数据,并告诉Weka在这种特定情况下,值不可用。然后如何处理这些信息取决于实际的学习算法。所以回答你的问题:

  1. 不是的。预测的属性是在训练模型时通过-c参数指定的。这个参数给出了要预测的属性的索引。默认情况下,它是最后一个,所以在你的例子中是’F’。
  2. 不是的。这实际上是实现的学习算法的问题,但Weka中的算法都不支持这一点。做法是为不同的预测训练多个模型。
  3. 在这种情况下这是没有意义的,因为你必须提供已知的值,以便Weka能够评估分类器的准确性。如果值完全未知,就无法判断它的好坏。

请注意,你可以保存一个训练好的模型,然后使用它进行预测。后一个页面还包含了你可以构建的知识流,以将这些结果保存为ARFF文件。

Related Posts

L1-L2正则化的不同系数

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

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

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

f1_score metric in lightgbm

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

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

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

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

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

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

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

发表回复

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