2012-03-24 328 views
-1

所以我有一个训练和测试集,它们包含多值标称值。只要我需要训练&测试NaiveBayesMultinomial分类,不支持多值标称值,我做了以下内容:Weka NominalToBinary使测试和训练集不兼容

java weka.filters.supervised.attribute.NominalToBinary -i train.arff -o train_bin.arff -c last 
java weka.filters.supervised.attribute.NominalToBinary -i test.arff -o test_bin.arff -c last 

然后我运行此:

java weka.classifiers.bayes.NaiveBayesMultinomial -t train_bin.arff -T test_bin.arff 

而下面错误出现了:

Weka exception: Train and test files not compatible! 

据我了解后,我检查这两个文件.arff,他们成了不兼容后我跑NominalToBinary,因为训练和测试本身ts是不同的,因此生成不同的二元变量。

是否有可能以设置保持兼容的方式执行NominalToBinary转换?

回答

0

将两个集合连成一个,执行NominalToBinary转换,然后再将它们拆分。这样,它们应该以相同的方式归一化。

但是你确定这些文件之前是否兼容?或者,你的测试和/或训练集可能包含另一个没有的属性案例?

+0

什么分类器能够处理多值名义? 我该如何连接,然后以相同的方式拆分它们? – bazzilic 2012-03-24 13:36:46

+0

我不使用分类或Weka很多,所以我不能告诉你细节。只是你总是应该正常化(包括二进制转换)测试和训练数据完全相同的方式。通常,在预处理之后进行拆分。 – 2012-03-24 17:00:09

相关问题