2
我在使用NaiveBayesMultinomialText分類器的Weka中應用文本分類。問題是,當我使用GUI來做和測試相同的火車數據(沒有交叉驗證)時,我得到了93%的熱情,而當我嘗試通過Java代碼做到這一點時,我獲得了67%的熱情。什麼可能是錯誤的?通過Java代碼在Weka GUI和Weka中的不同結果
在GUI中,我使用了以下配置:
Lnorm 2.0
debug False
lowercaseTokens True
minWordFrequency 3.0
norm 1.0
normalizeDocLength False
periodicPruning 0
stemmer NullStemmer
stopwords pt-br-stopwords.dat
tokenizer NgramTokenizer (default parameters, but max ngramsize = 2)
useStopList True
useWordFrequencies True
然後我選擇「測試選項」「使用訓練集」。
現在在Java代碼中,我有:
Instances train = readArff("data/naivebayestest/corpus_treino.arff");
train.setClassIndex(train.numAttributes() - 1);
NaiveBayesMultinomialText nb = new NaiveBayesMultinomialText();
String opt = "-W -P 0 -M 5.0 -norm 1.0 -lnorm 2.0 -lowercase -stoplist -stopwords C:\\Users\\Fernando\\workspace\\GPCommentsAnalyzer\\pt-br_stopwords.dat -tokenizer \"weka.core.tokenizers.NGramTokenizer -delimiters ' \\r\\n\\t.,;:\\\'\\\"()?!\' -max 2 -min 1\" -stemmer weka.core.stemmers.NullStemmer";
nb.setOptions(Utils.splitOptions(opt));
nb.buildClassifier(train);
Evaluation eval = new Evaluation(train);
eval.evaluateModel(nb, train);
System.out.println(eval.toSummaryString());
System.out.println(eval.toClassDetailsString());
System.out.println(eval.toMatrixString());
也許我失去了我的Java代碼東西..任何想法?
謝謝!