lda分析时我的dataprep有问题吗?

Is there a problem with my dataprep during lda analysis?

我在尝试对 R 中鸢尾花数据集的一个子集执行 运行 lda 时遇到错误。可变长度似乎不同,我不明白为什么?

”错误 table(original = y[test], predicted = pred_class) : 所有参数必须具有相同的长度

我尝试使用子集、with、过滤器等拆分变量,但一直出现相同的错误

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 输出

简而言之:您正在从数据框中删除一个因子,但不会删除未使用的因子级别,这会干扰 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
  ....