R语言实现LDA算法(鸢尾花)

R代码

链接: link.
亲测有效
下面展示一些 内联代码片

install.packages("MASS")
library(MASS)
nx = 150
irisdata = iris[1:nx, 1:4]
irisgrp = iris[1:nx, 5]
(lda.sol = lda(irisdata, irisgrp))

R语言实现LDA算法(鸢尾花)_第1张图片
下面展示一些 内联代码片

result = predict(lda.sol, irisdata)
table(irisgrp, result$class) #$class是预测结果

R语言实现LDA算法(鸢尾花)_第2张图片
下面展示一些 内联代码片
进行变换

P = lda.sol$scaling
# 将均值向量降维
>means = lda.sol$means %*% P
# 加权平均的出总的降维均值向量,权重就是lda.sol$prior
>total_means = as.vector(lda.sol$prior %*% means)
>n_samples = nrow(irisdata)

# 把样本降维并平移
>x<-as.matrix(irisdata) %*% P - (rep(1, n_samples) %o% total_means)

可视化

plot(x, cex=1.2,
     pch=rep(21:23, c(50,50,50)),
     col=rep(2:4, c(50,50,50)),
     bg=rep(2:4, c(50,50,50)))

R语言实现LDA算法(鸢尾花)_第3张图片

你可能感兴趣的:(R语言实现LDA算法(鸢尾花))