今天遇到一个很奇怪的问题,在R中用Knn算法实现数据集iris3聚类时,本来把50份数据按30份训练数据,20份测试数据进行编码时,运行出现错误,说是“训练集和类长度不一致(错误于knn.cv(train, test, cl, k = 3, prob = TRUE) : 'train' and 'class' have different lengths)”,但是仅仅把数据按照25作为训练集,25作为测试集则能运行通过。这是为什么呢?搞不懂。求坛里的大牛帮忙解释解释。感激不尽!(现在把代码都粘在下面)
library(FNN)
library(gmp)
library(rknn)
data(iris3)
train <- rbind(iris3[1:30,,1], iris3[1:30,,2], iris3[1:30,,3]) #选前30个数据为训练数据
test <- rbind(iris3[31:50,,1], iris3[31:50,,2], iris3[31:50,,3])#剩下的为测试数据
cl <- factor(c(rep("s",30), rep("c",30), rep("v",30)))
knn.cv(train, test, cl, k = 2, prob=TRUE) #进行KNN算法分类,此处出现错误
错误于knn.cv(train, test, cl, k = 3, prob = TRUE) : 'train' and 'class' have different lengths
#下面这份代码能运行通过
> data(iris3)
> train <- rbind(iris3[1:25,,1], iris3[1:25,,2], iris3[1:25,,3])
> test <- rbind(iris3[26:50,,1], iris3[26:50,,2], iris3[26:50,,3])
> cl <- factor(c(rep("s",25), rep("c",25), rep("v",25)))
> knn(train, test, cl, k = 3, prob=TRUE)