Я выполняю kNN-предсказание числовой переменной (регрессия knn или среднеарифметическое значение). Я использую эвклидовое расстояние и 1/расстояние в качестве весов, но я не знаю, как это применяется. и у меня есть вопрос:Что такое весовая функция в weka IBk?
Как точно выполняется взвешивание в WEKA IBk для регрессии? Является ли это простой функцией, например, расстоянием или чем-то более сложным? Я посмотрел в исходном коде, но ничего не мог понять. И как точно определяется расстояние - это евклидова или какая-то модификация? Что что кодовые средства (это линии 867 и 868 из исходного кода ИКА):
distances[i] = distances[i]*distances[i];
distances[i] = Math.sqrt(distances[i]/m_NumAttributesUsed);
Да, это должно быть! Это стандартный алгоритм. Я пытаюсь воспроизвести метод в чистом KNIME (без узлов WEKA), чтобы добавить некоторые функции. Но я не могу получить тот же результат, что и IBk !!! Я вычислил его вручную, и снова он не работает. Я не уверен, но на строках 867 и 868 есть код, который каким-то образом изменяет расстояние. Это матер? Есть идеи?! –
Я не могу понять, почему, но похоже, что они включают количество используемых атрибутов в меру расстояния. Вы пробовали читать бумагу, на которой основана IBk? Его можно найти здесь (http://sci2s.ugr.es/pr/pdf/1991-Aha-ML.pdf). Так же, как побочная заметка, ваш первоначальный вопрос касался взвешивания. Я рад попытаться помочь, но если вас беспокоят конкретные строки кода, которые вы указали, вы можете получить более полезные ответы, если вы упомянули их в вопросе! – Walter
Я видел эту бумагу, но я не мог найти объяснения. Ну, моя первоначальная забота была о разнице между результатами классического knn и IBk. Затем я начал искать причину этого, и я нашел исходный код. Я видел две линии, и я думал, что это может быть причиной такой разницы.Я попробовал расчет вручную, но снова я не смог создать результат IBk. –