1
我是Weka新手,我有2級數據進行分類。我可以使用權重(單詞出現,TFIDF或單詞出現)對它進行分類。我想提高通過集成在了Weka特徵選擇機制如下分類的準確性:Weka功能選擇(InfoGainAttributeEval,ChiSquaredAttributeEval)
BufferedReader trainReader = new BufferedReader(new FileReader(dataSource));
trainInsts = new Instances(trainReader);
trainInsts.setClassIndex(trainInsts.numAttributes() - 1);
// I am using the filter to convert the data from string to numeric
StringToWordVector STWfilter = new StringToWordVector();
FilteredClassifier model = new FilteredClassifier();
model.setFilter(STWfilter);
STWfilter.setOutputWordCounts(true);
int n = 400; // number of features to select
AttributeSelection attributeSelection = new AttributeSelection();
ranker = new Ranker();
ranker.setNumToSelect(n);
infoGainAttributeEval = new InfoGainAttributeEval();
attributeSelection.setEvaluator(infoGainAttributeEval);
attributeSelection.setSearch(ranker);
attributeSelection.setInputFormat(trainInsts);
trainInsts = Filter.useFilter(trainInsts, attributeSelection);
Evaluation eval = new Evaluation(trainInsts);
eval.crossValidateModel(model, trainInsts, folds, new Random(1));
這工作,我可以看到反對使用標準的加權方法略有改善,如(字出現)。我不確定我做的是否正確。因爲我覺得特徵選擇方法與加權方法相同。我還必須給出我應該擁有的「n」個特徵嗎?這會顯着影響分類器的結果,如何設置此值,例如,當我有3000個實例時,我應該選擇多少個特徵? Weka有沒有什麼方法可以獲取我的數據中的特徵(詞)數量?例如2000個實例,最好的精度是n = 400。
有何評論?
在此先感謝
非常感謝專業科學的答案。 – Jeem