如何解决与R的K最近邻居的以下维度不匹配?

mer*_*011 10 r

在下面的代码中,我试图使用K个最近邻居和一个预测器.据我所知,不需要在示例数量上train.X匹配示例数量test.X,但R似乎没有正确解析我的输入.

library(ISLR)
library(class)

train=(Weekly$Year<2009)
train.X = Weekly$Lag2[train]
test.X = Weekly$Lag2[!train]
train.Direction = Weekly$Direction[train]
knn.pred = knn(train.X, test.X, train.Direction, k=1)
Run Code Online (Sandbox Code Playgroud)

运行上面的代码时,它会收到错误

   Error in knn(train.X, test.X, train.Direction, k = 1) :   
      dims of 'test' and 'train' differ                       
Run Code Online (Sandbox Code Playgroud)

我该如何修复train.X,test.X以便R正确解析它们?

Lar*_*off 15

knn函数将矩阵或数据帧作为训练和测试集的参数.你传入一个向量,它被解释为一个矩阵,但不是你想要的方式.具体而言,您传入的数据被解释为单个数据点,其中不同的值表示要素.这意味着列车和测试的功能数量不同,如错误消息所示.

要修复,只需明确转换,例如

knn.pred = knn(data.frame(train.X), data.frame(test.X), train.Direction, k=1)
Run Code Online (Sandbox Code Playgroud)