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
....
我在尝试对 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
....