Я сравниваю свой базовый классификатор 1NN с взвешенным по обратному расстоянию голосованием по 30 наборам данных, и варианты взвешенного голосования, кажется, заставляют классификатор работать так же или хуже в 90% случаев.
У меня вопрос: это нормально или я неправильно внедрил некоторую часть классификатора?
Я использую Java и WEKA.Я протестировал 30 наборов данных , найденных здесь .Я провожу 30 тестов для каждого набора данных и вычисляю среднюю точность.Я рассчитываю точность путем подсчета всех правильных предсказаний и деления их на общее количество экземпляров, которые я классифицирую.
Следующий код классифицирует экземпляр, проверяя его общую точность на наборе данных 30 раз и вычисляя точность.
for(int j = 0; j < 2; j++) {
if(j == 1) {
knn.setWeightedVoting(true);
}
double averageAccuracy = 0;
for(int i = 0; i < 30; i++){
double correct = 0;
for(Instance test : newTestData){
double prediction = knn.classifyInstance(test);
if(prediction == test.value(newTestData.numAttributes()-1)) {
correct++;
}
}
double accuracy = (correct * 100) / newTestData.numInstances();
averageAccuracy+=accuracy;
}
}
averageAccuracy = averageAccuracy / 30;
Этот код должен включать взвешенное голосование с использованием обратного расстояниякаждый сосед (только 1 в этом случае).У меня есть счет, представленный массивом, где каждый индекс представляет класс в наборе данных.Затем я увеличиваю k класса ближайших соседей на вес голоса
for(Instance instance : kNearestNeighbours) {
if(this.weightedVoting) {
double distance = ClassifierTools.getDistance(instance, testInstance);
double voteWeight;
if(distance == 0){
voteWeight = 0;
}
else{
voteWeight = 1/(distance);
}
classTally[(int)instance.classValue()]+=voteWeight;
}
else{
classTally[(int)instance.classValue()]++;
}
}
. Я оцениваю взвешенное голосование как улучшение базового классификатора 1NN, поэтому я ожидаю увидеть некоторое относительное улучшение, однако только 3 набора данных показывают улучшениеи из этих 3 только 2 из них показывают улучшение более чем на 0,5%.
Вот список моих полных результатов по каждому набору данных
Base 1NN accuracy Weighted 1NN accuracy
86.75 86.75
66.6 71.83
74.07 72.22
81.76 81.76
71.55 71.55
51.98 51.98
92.33 92.98
85.22 85.22
97.33 97.33
75 67
69.53 69.53
97.36 97.36
95.03 95.03
96.35 95.68
93.87 93.87
58.24 58.24
61.11 63.4
72.97 72.97
93.33 93.33
89.09 86.31
89.65 89.65
70.99 70.99
72.32 72.32
96.66 96.66
95.001 95.001
77.41 77.41
84.35 84.35
71.73 71.73
57.16 37.37
51.54 51.14
Заранее спасибо