require(MASS) dat = read.table(stdin(),header=T) x1 x2 class 4 2 A 2 4 A 2 3 A 3 6 A 4 4 A 9 10 B 6 8 B 9 5 B 8 7 B 10 8 B plot(dat$x1,dat$x2,type="n"); text(dat$x1,dat$x2,dat$class) lda.mod = lda(class ~ ., data=dat, prior = c(1,1)/2) lda.mod lda.pred <- predict(lda.mod, dat) lda.pred round(lda.pred$posterior,5) plot(lda.mod) #plots LDA_scores (lda.pred$x) dat2 = data.frame(cbind( x1=c(4,5,6), x2=c(6,7,7) )) dat2 plot( dat$x1, dat$x2, type="n"); text(dat$x1,dat$x2,dat$class) text(dat2$x1,dat2$x2, "X", col=2) lda.pred2 <- predict(lda.mod, newdata=dat2) #NB: varnames must match lda.pred2 # LDA on the Iris Data data(iris) head(iris) summary(iris) by(iris,iris$Species,summary) lda.mod <- lda(Species ~ ., data = iris, prior = c(1,1,1)/3) attributes(lda.mod) head(lda.mod) lda.pred <- predict(lda.mod, iris) lda.pred.class <- lda.pred$class table(lda.pred.class) table(lda.pred.class,iris$Species) #"Confusion" matrix lda.detail <- cbind(as.character(lda.pred$class),round(lda.pred$posterior,6)) lda.detail[1:10,] lda.detail[130:140,] ldahist(lda.pred$x[,1],g=iris$Species) plot(lda.mod) plot(lda.pred$x[,1], lda.pred$x[,2], col=iris$Species) #as.numeric for colors set.seed(1) train <- sample(1:dim(iris)[1], 75) mod <- lda(Species ~ ., iris, prior = c(1,1,1)/3, subset = train) # training model lda.pred = predict(object = mod, newdata = iris[-train, ]) # predictions table(lda.pred$class, iris$Species[-train]) #"Confusion" matrix plot(mod) plot(lda.pred$x[,1], lda.pred$x[,2], col=iris$Species[-train]) #as.numeric for colors