[英]Finding k-Nearest-Neighbor in R with knn() from class package
这是家庭作业。
我有2个矩阵,1个用于训练,1个用于测试。 数据有两列数据用于分类,第三列用于已知类。 两个矩阵都有第三列。
[1] [2] [3]
[1] 6.4 0.32 2
[2] 4.8 0.34 0
[3] 4.9 0.25 2
[4] 7.2 0.32 1
其中汉堡是班级(从0到2)。
我的数据集的维度对于训练集是100 3,对于测试集是38 3。
我试图使用类lbrary的knn()函数。
knn使用以下参数:( train,test,cl,k = 1,l = 0,prob = FALSE,use.all = TRUE)
我试图直接使用我的数据集,但后来我得到错误:“'train'和'class'有不同的长度”
我尝试了一些事情,但现在几个小时后我就陷入了困境。 目前我在编辑器中有这个代码:
cl <- t(factor(c(rep("0",1), rep("1",1), rep("2",1))))
k <- knn(train, test, cl)
但它不起作用。 有人能帮我吗?
我想找到运行3个不同k值的函数,并找到每个k值的准确性。 在那之后,我将5倍交叉验证最佳k。
正如文档所述, cl
是factor of true classifications of the training set
即你的y
变量(训练集的第三列)。
这意味着该功能应如下所示:
cl <- factor(c(2,0,2,1)) #or alternatively factor(train[,3])
k <- knn(train[,c(1,2)], test[,c(1,2)], cl)
正如您在训练集和测试集中看到的那样, y
变量(具有类的列)不包含在测试和训练集中。 该列仅作为cl
参数中的一个因子包含在内。
您收到的错误是因为训练集的行数不等于因子的长度,在这种情况下它只有3个元素(这是因为您认为您只需要指定因子的级别)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.