lda分析期间我的dataprep是否有问题?

时间:2019-01-05 18:23:37

标签: r lda

尝试在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输出

1 个答案:

答案 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
  ....