使用Weka在GUI和API实现之间提供了不同的结果

时间:2014-03-27 00:12:33

标签: java machine-learning nlp classification weka

我正在使用Weka对我的数据集进行分类。首先,我使用GUI为我做了一些结果(Accurracy,ROC,...)。现在我正在使用API​​在WEKA周围实现一个小框架,我运行完全相同的配置但得到不同的结果。 让我举个例子:

GUI中.ARFF文件的配置:

    @relation 'QueryResult-weka.filters.unsupervised.attribute.NominalToString-Clast
-weka.filters.unsupervised.attribute.StringToWordVector-R2-W1000-prune-rate-1.0-N0
 -stemmerweka.core.stemmers.NullStemmer-M1-O-tokenizerweka.core.tokenizers.WordTokenizer -delimiters \",
-weka.filters.unsupervised.attribute.StringToNominal-R2-last
-weka.filters.unsupervised.attribute.NumericToBinary-unset-class-temporarily
-weka.filters.unsupervised.attribute.NominalToString-Cfirst
-weka.filters.unsupervised.attribute.StringToWordVector-R1-W1000000-prune-rate-1.0-C-T-I-N0-L-S
 -stemmerweka.core.stemmers.NullStemmer-M1-stopwords/Users/stopwds.txt-tokenizerweka.core.tokenizers.WordTokenizer 
 -delimiters \" \\r \\t.,;:\\\'\\\"()?!-/<>[]\\t\\r\\n\"-weka.filters.unsupervised.attribute.Remove-R120-1964
-weka.filters.unsupervised.attribute.Remove-R121-123'

正如我所说,使用API​​我使用相同的配置:

@relation 'QueryResult-weka.filters.unsupervised.attribute.NominalToString-Clast
-weka.filters.unsupervised.attribute.StringToWordVector-R2-W1000-prune-rate-1.0-N0
 -stemmerweka.core.stemmers.NullStemmer-M1-O-tokenizerweka.core.tokenizers.WordTokenizer -delimiters \",
-weka.filters.unsupervised.attribute.StringToNominal-R2-last
-weka.filters.unsupervised.attribute.NumericToBinary-unset-class-temporarily
-weka.filters.unsupervised.attribute.NominalToString-Cfirst
-weka.filters.unsupervised.attribute.StringToWordVector-R1-W1000000-prune-rate-1.0-C-T-I-N0-L-S
 -stemmerweka.core.stemmers.NullStemmer-M1-stopwords/Users/stopwds.txt-tokenizerweka.core.tokenizers.WordTokenizer 
 -delimiters \" \\r \\t.,;:\\\'\\\"()?!-/<>[]\\t\\r\\n\"-weka.filters.unsupervised.attribute.Remove-R120-1964
-weka.filters.unsupervised.attribute.Remove-R121-123'

现在当我运行分类器时,再次使用相同的配置,我得到不同的输出!然而,有趣的是当我在运行配置后加载从我的Java代码生成的.ARFF文件然后在那里训练分类器时,我得到与预期/需要完全相同的输出。

可以请某人解释我做错了什么以及为什么输出不同?我阅读了其他帖子,例如发生类似问题的link

- 为了澄清,这里是GUI中我的分类器的配置:

 weka.classifiers.lazy.IBk -K 30 -W 0 -I -A "weka.core.neighboursearch.LinearNNSearch -A \"weka.core.EuclideanDistance -R first-last\""

这就是我的Java代码:

iBk.setOptions(weka.core.Utils.splitOptions("-K 30 -W 0 -I -A \"weka.core.neighboursearch.LinearNNSearch -A \\\"weka.core.EuclideanDistance -R first-last\\\"\""));

0 个答案:

没有答案