使用MASS:lda()访问LDA中线性判别式的观察得分

Fed*_*o C 2 r cluster-analysis

library(MASS)
example(lda)
plot(z)
Run Code Online (Sandbox Code Playgroud)

如何访问z中的所有点?我想知道LD1和LD2上每个点的值取决于它们的Sp(c,s,v).

Rei*_*son 5

您正在寻找的是作为predict()类对象方法的一部分计算"lda"(请参阅参考资料?predict.lda).它作为x由predict(z)以下项生成的对象的组件返回:

## follow example from ?lda
Iris <- data.frame(rbind(iris3[,,1], iris3[,,2], iris3[,,3]),
                   Sp = rep(c("s","c","v"), rep(50,3)))
set.seed(1) ## remove this line if you want it to be pseudo random
train <- sample(1:150, 75)
table(Iris$Sp[train])
## your answer may differ
##  c  s  v
## 22 23 30
z <- lda(Sp ~ ., Iris, prior = c(1,1,1)/3, subset = train)

## get the whole prediction object
pred <- predict(z)
## show first few sample scores on LDs
head(z$x)
Run Code Online (Sandbox Code Playgroud)

最后一行显示线性判别式上对象分数的前几行

> head(pred$x)
          LD1        LD2
40  -8.334664  0.1348578
56   2.462821 -1.5758927
85   2.998319 -0.6648073
134  4.030165 -1.4724530
30  -7.511226 -0.6519301
131  6.779570 -0.8675742
Run Code Online (Sandbox Code Playgroud)

这些分数可以这样绘制

plot(LD2 ~ LD1, data = pred$x)
Run Code Online (Sandbox Code Playgroud)

产生以下图(对于这个训练样本!)

lda得分情节