在下面的代码中,我试图使用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)