尝试在R中的虹膜数据集的子集上运行lda时出现错误。变量长度似乎不同,我不明白为什么?
“表中的错误(原始= y [测试],预测= pred_class): 所有参数的长度必须相同”
我尝试使用子集,with,filter等拆分变量,但始终收到相同的错误
iris_or<-with(iris, iris[order(Species),])
head(iris_or)
iris_or<-iris_or[51:150,]
spor = sample(nrow(iris_or), nrow(iris_or)*.75) #sampling without replacement
dtrainor<-iris_or[spor,]
summary(dtrainor)
dtestor<-iris_or[-spor,]
summary(dtestor)
orlda = linDA(dtrainor[,1:4], dtrainor[,5])
summary(orlda)
orlda$functions
我基本上期望lda输出
答案 0 :(得分:1)
简而言之:您正在从数据框中删除一个因子,但没有降低未使用的因子水平,这会干扰linDA读取数据帧的方式。在将数据帧放入linDA函数之前,请使用droplevels()
。下面是一种方法。
test <- iris[iris$Species != 'setosa',]
ind <- sample(nrow(test), nrow(test)*.75)
td <- iris_or[ind,]
dte<-iris_or[-ind,]
td <- droplevels(td) # removing unused levels
ana <- linDA(td[,1:4], td$Species)
ana
Linear Discriminant Analysis
-------------------------------------------
$functions discrimination functions
....