Я новичок в 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