使用 class 包中的 knn() 在 R 中查找 k 最近邻
Finding k-Nearest-Neighbor in R with knn() from class package
这是家庭作业。
我有 2 个矩阵,1 个用于训练,1 个用于测试。
数据有两列数据应用于 classification 和第三列已知 class。两个矩阵都有第三列。
[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
其中整数是 classes(从 0-2)。
我的数据集的维度是训练集 100 3 和测试集 38 3。
我尝试使用 class 库的 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 值的函数,并找出每个函数的准确度。之后我将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 个元素(这是因为您认为您只需要指定那里的因素)。
这是家庭作业。
我有 2 个矩阵,1 个用于训练,1 个用于测试。 数据有两列数据应用于 classification 和第三列已知 class。两个矩阵都有第三列。
[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
其中整数是 classes(从 0-2)。
我的数据集的维度是训练集 100 3 和测试集 38 3。
我尝试使用 class 库的 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 值的函数,并找出每个函数的准确度。之后我将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 个元素(这是因为您认为您只需要指定那里的因素)。