Есть ли проблема с моим dataprep во время анализа lda? - PullRequest
0 голосов
/ 05 января 2019

Я получаю сообщение об ошибке при попытке запустить lda для подмножества набора данных iris в R. Кажется, что переменные длины разные, и я не понимаю, почему?

"Ошибка в таблице (оригинал = y [тест], прогнозирование = pred_class): все аргументы должны иметь одинаковую длину "

Я пытался разделить переменную с использованием подмножества, фильтра и т. Д., Но продолжаю получать ту же ошибку

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 голосов
/ 05 января 2019

Короче говоря: вы удаляете фактор из своего фрейма данных, но не сбрасываете уровень неиспользованного фактора, который влияет на то, как linDA считывает ваш фрейм данных. Используйте droplevels() перед размещением вашего фрейма данных в функции linDA. Ниже приведен подход.

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