繁体   English   中英

使用类包中的knn()在R中查找k-Nearest-Neighbor

[英]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。

正如文档所述, clfactor 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM