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

标签 machine-learning data-mining weka arff

我试图让 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}
@data
0,0,0,0,0,0
0,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}
@data
0,?,0,0,0,0
0,?,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 才能评估分类器的准确性。如果这些值完全未知,则无法判断它有多好。

请注意,您可以 save a trained model然后use it to make predictions 。后一页还包含您可以构建的知识流,以将结果保存为 ARFF 文件。

关于machine-learning - 告诉 Weka 在 ARFF 文件中预测哪些属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20637877/

相关文章:

data-mining - 分析嘈杂的数据

java - 对数据执行线性回归(来自 .arff 文件)- JAVA、Weka

numpy - 矢量化正则化梯度下降未通过数值检查

machine-learning - 用于潜在语义分析 (LSA) 的奇异值分解 (SVD) 生成的矩阵的含义/含义

machine-learning - 机器学习的应用

java - Weka 安装 libsvm

r - 如何获得J48尺寸和叶子数量

python - 将 pandas 数据框分层拆分为训练、验证和测试集

python - AWS SageMaker 中 mxnet 线性学习器的正确输入是什么?

python - 层次聚类的阈值