【问题标题】:Weka : training and test set are not compatibleWeka:训练和测试集不兼容
【发布时间】:2013-01-01 03:49:29
【问题描述】:

我的训练和测试数据集的每一行都有图像中像素的强度值,最后一列的标签告诉图像中代表的是什么数字;标签可以是训练集中从 0 到 9 的任意数字,并且总是?在测试集上。

我在 Weka Explorer 上加载了训练数据集,通过 NumericalToNominal 过滤器传递数据,并使用 RemovePercentage 过滤器以 70-30 的比例拆分数据,30% 的文件用作交叉验证集。我建立了一个分类器并保存了模型。

然后,我加载了包含 ?针对每一行的标签并应用 NumericToNominal 过滤器并将其保存为 arff 文件。

现在,当我加载测试数据并尝试针对它使用模型时,我总是收到错误消息“训练和测试集不兼容”。两个数据集都经过了相同的处理。可能出了什么问题?

【问题讨论】:

  • 对不起,不能评论,写的太多了,所以我会放在答案上

标签: weka


【解决方案1】:

您可以使用批量过滤,在这里您可以阅读如何在 weka 中batch filtering

【讨论】:

  • 欢迎来到 SO ,您可以将此添加为具有适当声誉的评论
【解决方案2】:

您可以从 ARFF 手册 (http://www.cs.waikato.ac.nz/ml/weka/arff.html) 中阅读:

标称值是通过提供一个 列出可能的值:{, , , ...}

例如,鸢尾花数据集的类值可以定义为 如下:

@ATTRIBUTE class        {Iris-setosa,Iris-versicolor,Iris-virginica}

因此,当您将NumericToNominal 应用于您的测试文件时,您可能会在 train 和 test arff 中为一个或多个属性设置不同数量的可能值 - 这确实会发生,它困扰了我很多次 - 所以一种解决方案是手动检查你的arff(如果它不是很大,或者只是复制并粘贴调用arff文件) 例如

@attribute 'My first binary attribute' {0,1}
(...)
@attribute 'My last binary attribute' {0,1}

从火车到测试文件 - 应该可以工作

【讨论】:

  • 谢谢!目标变量是导致问题的原因。训练数据具有所有可能的目标值,而测试数据具有?对于所有实例的目标值。将目标值的属性从训练复制到测试文件,就成功了
猜你喜欢
  • 2012-12-04
  • 2018-10-19
  • 2013-03-23
  • 2016-03-20
  • 2013-07-14
  • 2016-03-01
  • 2013-11-16
  • 2015-01-17
  • 2019-08-15
相关资源
最近更新 更多