在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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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