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



这是在家工作。

我有两个矩阵,一个用于训练,一个用来测试。数据有两列数据,应用于分类,第三列为已知类别。两个矩阵都有第三列。

    [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)

我试着直接使用我的数据集,但后来我得到了错误:"‘训练’和‘类别’有不同的长度"

我试过一些东西,但几个小时后就卡住了。目前,我的编辑器中有以下代码:

cl <- t(factor(c(rep("0",1), rep("1",1), rep("2",1))))
k <- knn(train, test, cl)

但它不起作用。有人能帮我吗?

我想找到用3个不同的k值运行函数,并找到每个值的准确性。之后,我将对最佳k进行5倍的交叉验证。

正如文档所述,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个元素(这是因为您认为只需要在那里指定因子的级别)。

最新更新