1

我正在尝试使用 weka 对文本进行分类。我要做的是:

  • 我在包含所有数据的大 ARFF 文件上创建:all_of_it.arff.
  • 我将这些数据分成训练和测试:train.arfftest.arff
  • 我对训练集进行特征选择并输出一个新的训练文件:train_fs.arff
  • 我构建了一个只包含那些选定特征的分类器。

而问题是......

我不太清楚如何将测试集标准化为仅使用我从训练集中选择的特征。像创建新的测试文件这样的test.arff东西train_fs.arff

*我尝试使用

java -cp weka.jar weka.filters.unsupervised.attribute.Standardize -b -i train_fs.arff -o train2.arff -r test.arff -s test2.arff

但我得到了臭名昭著的Src and Dest differ in # of attributes

有什么方法可以根据 arff 文件(即我的新训练数据,具有很少的特征)对集合进行标准化/标准化,我不知道如何使用 Standardize 或 StringToWordVector 过滤器来做到这一点。

4

2 回答 2

1

批量过滤是您的问题的一种解决方案。

优点:

  • 它会将相同的过滤器应用于您的测试数据集,就像您应用于训练数据集一样。当您执行特征选择时,两个数据集将兼容

缺点:

  • 它只能从命令行界面或 Weka 的 Java API 获得
  • 两个数据集必须同时过滤

您可以在此处阅读有关批量过滤的更多信息。

于 2013-10-14T14:32:11.253 回答
1

您可能还想查看InputMappedClassifier。它是一个包装分类器,用于处理不兼容的训练和测试数据。

于 2014-04-25T14:20:30.060 回答