如何使用R中的knn找到缺失的收入值

时间:2016-07-07 00:42:59

标签: r dataset knn

这是我创建的数据集:

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)

正在寻找测试,训练和训练。不知道从哪里去。我感谢任何帮助。

1 个答案:

答案 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的收入预测,其中包含AgeAsset_Size以及knn的信息,它只是意味着找出哪个已知客户1,2,3 X最接近。

因此,对于客户Age,培训数据集将是Asset_Size1,2,3

train <- chart1[2:4, 2:3]

对于客户Age,测试数据集将是Asset_SizeX

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,如果您查看他们的AgeAsset_size信息,这是有意义的,因为他们是接近的。