Вот набор данных, который я создал:

ID <- c('X',1,2,3)
Age <- c(30,25,33,35)
Asset_Size <- c(60,50,60,80)
Income <- c(NA,100000,90000,150000)
chart1 <- data.frame(ID,Age,Asset_Size,Income)

Я пытаюсь найти недостающее значение дохода для клиента X, если K = 3 и метод = «взвешенное голосование по расстоянию». До сих пор я делал это с помощью метода «невзвешенного голосования», и это то, как он выглядит.

train <- chart1[2:4, 2:3]
test <- chart1[1, 2:3]
cl <- chart1[2:4, 1]
knn(train, test, cl, k = 3, prob = T)

Как мне найти недостающее значение, используя метод K = 3 и метод «взвешенного по расстоянию»? Спасибо

1
Tomas 7 Июл 2016 в 19:00

1 ответ

Лучший ответ
require(VIM)
require(laeken)
kNN(chart1, k = 3, numFun = weightedMean, weightDist=TRUE)

Time difference of 0.008000851 secs
  ID Age Asset_Size   Income ID_imp Age_imp Asset_Size_imp Income_imp
1  X  30         60 106666.7  FALSE   FALSE          FALSE       TRUE
2  1  25         50 100000.0  FALSE   FALSE          FALSE      FALSE
3  2  33         60  90000.0  FALSE   FALSE          FALSE      FALSE
4  3  35         80 150000.0  FALSE   FALSE          FALSE      FALSE
0
Hack-R 7 Июл 2016 в 19:05
Он говорит об ошибке в knn (chart1, k = 3, numFun = weightedMean, weightDist = TRUE): неиспользуемые аргументы (numFun = weightedMean, weightDist = TRUE)
 – 
Tomas
7 Июл 2016 в 19:12
Это потому, что вы изменили kNN на knn. Это разные функции KNN. Это из пакета VIM. Убедитесь, что вы скопировали и вставили код из моего ответа. Установите пакеты, если у вас их нет.
 – 
Hack-R
7 Июл 2016 в 19:17
Он сказал мне, что не может найти функцию "kNN", поэтому я переключил его на обычную функцию knn. Я думаю, что мне что-то здесь не хватает. Я только что установил VIM и laeken
 – 
Tomas
7 Июл 2016 в 19:21
1
Хорошо, произошла ошибка при установке Vim. Я посмотрю, что это такое. Спасибо
 – 
Tomas
7 Июл 2016 в 19:38
Окей круто. Убедитесь, что вы ввели его как VIM, а не Vim, и загрузите библиотеку после ее установки.
 – 
Hack-R
7 Июл 2016 в 19:38