fisher线性判别_线性判别,ggplot2 , rayshader

f98f11840ec4a4b2200f7908ed64a972.png

正好最近可能会用到判别分析,就分享一下

判别分析分为fisher判别(基于统计),和贝叶斯判别(基于概率)

这里分享一下用r做fisher判别里面关于两组之间的判别。

用的也是王斌会老师教材上的案例,

这里也用到ggplot2,还用到一个蛮好玩的包rayshader,大家可以去摸索一下

#第二个图
library(rayshader)
library(ggplot2)
library(MASS)
data_w<-read.csv("weather.csv")
View(data_w)

p<-ggplot(data_w,aes(x1,x2,colour=rain.or.sun))
p1<-p+xlim(-15,15)+ylim(-15,15)+
  geom_point()
p1+scale_colour_continuous(breaks=c(0,1),labels=c("雨","晴"),name="晴或雨")+
   theme_grey(base_family = "STKaiti")

plot_gg(p1)

050d1364e51a480a0925ed2d28b86b0c.png

这里就展现一下rayshader的功能,因为它必须用连续变量。

5a76d8ad2aa260ff33d5d6bb7b68a374.png
https://www.zhihu.com/video/1229438168077774848

当然还是回到正常

p<-ggplot(data_w1,aes(x1,x2,colour=rain.or.not))
p1<-p+xlim(-15,15)+ylim(-15,15)+
  geom_point()
p1
p2<-p1+scale_colour_discrete(labels=c("雨","晴"),name="晴或雨")+
  theme_grey(base_family = "STKaiti")+
  ggtitle("天气状况")+
  theme(plot.title = element_text(hjust = 0.5))
p2

d589a4fd6178a729eedabb3c8a4d336a.png

从图中,我们也可以大致进行分组哈,

线性判别的思想也是降维,用变量的最优的线性组合使得组间的距离最大,

ld<-lda(rain.or.not~x1+x2,data = data_w1)
ld

z<-predict(ld)
rain.or.not_pridict<-z$class
rain.or.not<-data_w1$rain.or.not
compare<-cbind(rain.or.not,z$x,rain.or.not_pridict)
compare

tab<-table(rain.or.not,rain.or.not_pridict)
sum(diag(prop.table(tab)))

7634f6d995b69bce875eba3d382c7290.png

最后两个数字就是x1,x2前的系数,我们把上面组内的均值带入,可以算出界值大约是1.2。

b5be427350c4ef2ad8673c777b3276e6.png

可以看到实际分组和预测分组

1fc1cd23d6453a77937ac0a6d210b1f4.png

得到预测的准确性 这里是90%

说实话,我没有看懂lda函数里面给出的LD1那一列到底是什么意思(就是下面这个图中间这一列),谁知道?希望告知。

谢谢

b5be427350c4ef2ad8673c777b3276e6.png

ps:如果有人需要王斌会老师书的pdf,也可以找我。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Fisher线性判别分析 (Fisher Linear Discriminant Analysis, FLDA) 是一种经典的线性判别分析方法,用于解决分类问题。Fisher线性判别是由英国统计学家R. A. Fisher于1936年提出的。 Fisher线性判别的目标是通过找到一个投影方向,使得不同类别的样本在投影空间中尽可能地分开,同一类别的样本尽可能接近。它基于两个重要的假设:样本在各个类别中服从正态分布,并且类别具有相同的协方差矩阵。 FLDA的步骤如下:首先计算每个类别的均值向量和类内散布矩阵,然后计算类间散布矩阵。接下来,通过求解广义瑞利商的最大特征值问题,找到一个投影向量,使得类内散布矩阵的投影尽可能小,而类间散布矩阵的投影尽可能大。最后,可以根据投影向量和阈值将样本进行分类。 Fisher线性判别具有一些优点。首先,它可以在高维空间中进行分类,通过降维可以更好地可视化数据,减少冗余信息。其次,FLDA考虑了类别之间的关系,可以有效地提取不同类别之间的差异特征。此外,FLDA不需要过多的参数估计,计算简单且具有较好的分类性能。 然而,Fisher线性判别也有一些限制。首先,FLDA假设样本满足正态分布,如果数据不符合该假设,则FLDA可能会失效。此外,FLDA是一种监督学习方法,需要有标签的训练数据,对于无标签数据,无法应用FLDA。 总之,Fisher线性判别是一种经典的线性判别分析方法,通过找到最佳投影方向来实现分类。它在降维、分类和特征提取等任务中具有广泛的应用,并具有较好的性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值