这是我创建的数据集:
ID <- c(NA,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)
如果K = 1且method =“un-weighted vote”,我正试图找到客户x的收入缺失值。 所以我想找到正确的knn代码。这是我到目前为止所尝试的内容。
knn(chart1,k = 1, prob=TRUE)
正在寻找测试,训练和训练。不知道从哪里去。我感谢任何帮助。
答案 0 :(得分:1)
您的原始数据框如下所示:
chart1
# ID Age Asset_Size Income
# 1 NA 30 60 NA
# 2 1 25 50 100000
# 3 2 33 60 90000
# 4 3 35 80 150000
因此,您正在寻找客户X
的收入预测,其中包含Age
和Asset_Size
以及knn
的信息,它只是意味着找出哪个已知客户1,2,3
X
最接近。
因此,对于客户Age
,培训数据集将是Asset_Size
和1,2,3
:
train <- chart1[2:4, 2:3]
对于客户Age
,测试数据集将是Asset_Size
和X
:
test <- chart1[1, 2:3]
群集只是ID
,因为你正在做一个最近的邻居:
cl <- chart1[2:4, 1]
按照文档的规定将这些数据集传递给knn
,您得到:
knn(train, test, cl, k = 1, prob = T)
[1] 2
attr(,"prob")
[1] 1
Levels: 1 2 3
所以X
最接近客户2,预测收入应为90000
,如果您查看他们的Age
和Asset_size
信息,这是有意义的,因为他们是接近的。