一些"训练"列不会出现在" test"

时间:2016-10-09 12:01:12

标签: r

大家。

我有问题。我必须使用LOO在R上实现kNN分类。我找到了包裹" knncat"和" loo"为了这。我已经编写了代码(没有LOO):

library(knncat)
x <- c(1, 2, 3, 4)
y <- c(5, 6, 7, 8)
train <- data.frame(x, y)
x1 <- c(9, 10, 11, 12)
y1 <- c(13, 14, 15, 16)
test <- data.frame(x1, y1)
answer <- knncat(train, test, classcol = 2)

我有一个错误&#34;有些&#34;训练&#34;列不会出现在&#34; test&#34;&#34;中。我不明白,我做错了什么?我该如何解决这个错误?

如果我的英语出了问题,抱歉,我来自俄罗斯:)

1 个答案:

答案 0 :(得分:0)

嗯,您的方法和knncat存在一些问题:

  1. 您必须为traintest数据集指定类标签,并相应地设置classcol
  2. 只有在火车中出现的班级标签必须在考试中出现。
  3. 列车和测试的列名必须相同,否则knncat会抛出您提到的错误:"Some "train" columns aren't present in "test"
  4. 此外,如果您使用整数值作为类标签,则必须从开始,否则knncat将抛出错误:"Number in class 0 is 0! Abort!"
  5. 以下是一个工作示例:

    train <- data.frame(x1=1:4, x2=5:8, y=c(0, 0, 1, 1))
    test <- data.frame(x1=9:12, x2=13:16, y=c(1, 0, 0, 1))
    knncat(train, test, classcol = 3)
    

    结果:

    Test set misclass rate: 50%