分类模型与算法--线性判别分析
来源:互联网 发布:java随机生成二维数组 编辑:程序博客网 时间:2024/06/14 00:03
一、概述
线性判别分析(Linear Discriminant Analysis,简称LDA)是一种经典的线性学习方法,在二分类问题上最早由Fisher提出,故又称“Fisher判别分析”。
LDA的思想:给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近、异类样例的投影点尽可能远离;在对测试集点进行分类时,将其投影到同样的这条直线上,根据投影点的位置来确定样本的类别。
如下图所示:
LDA既可以用来做线性分类,也可以单纯用来对数据进行降维。
二、实例
这里仅展示如何使用R语言,用LDA方法解决二分类问题。
R语言中MASS包中的lda函数可以实现该算法。这里采用天气预报数据进行演示。
> #数据录入> G<-c(rep(1,10),rep(2,10))> x1=c(-1.9,-6.9,5.2,5.0,7.3,6.8,0.9,-12.5,1.5,3.8,0.2,-0.1,0.4,2.7,2.1,-4.6,-1.7,-2.6,2.6,-2.8)> x2=c(3.2,0.4,2.0,2.5,0.0,12.7,-5.4,-2.5,1.3,6.8,6.2,7.5,14.6,8.3,0.8,4.3,10.9,13.1,12.8,10.0)> weather<-data.frame(G,x1,x2)> #画图观测> plot(x1,x2)> text(x1,x2,G,adj = -0.5)
> #加载包> library(MASS)> #建模> ld<-lda(G~x1+x2)> ldCall:lda(G ~ x1 + x2)Prior probabilities of groups: 1 2 0.5 0.5 Group means: x1 x21 0.92 2.102 -0.38 8.85Coefficients of linear discriminants: LD1x1 -0.1035305x2 0.2247957> z<-predict(ld)> newG<-z$class> #结果展示> newG [1] 1 1 1 1 1 2 1 1 1 1 2 2 2 2 1 2 2 2 2 2Levels: 1 2> z$class [1] 1 1 1 1 1 2 1 1 1 1 2 2 2 2 1 2 2 2 2 2Levels: 1 2$posterior 1 21 0.61625867 0.383741332 0.65888888 0.341111123 0.89412853 0.105871474 0.87143887 0.128561135 0.96214822 0.037851786 0.17275662 0.827243387 0.98442237 0.015577638 0.68514398 0.314856029 0.85330562 0.1466943810 0.52789262 0.4721073811 0.43015877 0.5698412312 0.30676827 0.6932317313 0.03336323 0.9666367714 0.34672296 0.6532770415 0.88585263 0.1141473716 0.40213732 0.5978626817 0.08694507 0.9130549318 0.03480991 0.9651900919 0.08934413 0.9106558720 0.09926372 0.90073628$x LD11 -0.286749012 -0.398524393 -1.291570534 -1.158466575 -1.958576036 0.948094697 -2.509877538 -0.470661049 -1.0658646110 -0.0676084211 0.1702240212 0.4935176013 2.0378018514 0.3834687115 -1.2403807716 0.2400586717 1.4234718218 2.0111998419 1.4054024420 1.33503926> y<-data.frame(G,z$x,newG)> y G LD1 newG1 1 -0.28674901 12 1 -0.39852439 13 1 -1.29157053 14 1 -1.15846657 15 1 -1.95857603 16 1 0.94809469 27 1 -2.50987753 18 1 -0.47066104 19 1 -1.06586461 110 1 -0.06760842 111 2 0.17022402 212 2 0.49351760 213 2 2.03780185 214 2 0.38346871 215 2 -1.24038077 116 2 0.24005867 217 2 1.42347182 218 2 2.01119984 219 2 1.40540244 220 2 1.33503926 2
从预测结果可以看出,只有6号和15号样本判别错误,准确率达到了90%。
参考资料:
【1】周志华.机器学习[M].北京:清华大学出版社,2016.
阅读全文
0 0
- 分类模型与算法--线性判别分析
- 针对二分类问题的线性判别分析模型
- 线性判别分析(LDA)模型
- R语言分类算法之线性判别分析(Linear Discriminant Analysis)
- 线性判别分析LDA算法
- 线性与二次判别分析
- 线性判别分析算法(LDA)
- 线性判别分析(LDA)算法
- LDA(线性判别分析)算法
- 生成学习算法、高斯判别分析与朴素贝叶斯模型
- 分类算法3----线性判别分析(LDA)原理和推导过程
- 分类模型与算法--决策树
- 分类模型与算法--贝叶斯分类器
- 线性判别分析(LDA)算法总结
- LDA(线性判别分析)算法入门
- 机器学习算法03-线性判别分析LDA
- 降维算法:线性判别分析LDA
- 线性判别分析
- 机器学习-----线性回归浅谈(Linear Regression)
- java 接口套三个Json的实现方式
- POJ3273 Monthly Expense(正确的二分法求最小化最大值)
- idempiere 汉化/新建实体
- java上传下载文件部署到linux系统下的一些问题
- 分类模型与算法--线性判别分析
- java 写文件的三种方法比较
- velocity模板保留两位小数(截断2位)
- mysql插入数据量过大报错解决办法
- 2017.10.23学习知识总结回顾及编写新网页
- 用C语言编写程序在屏幕上打印杨辉三角。(非递归)
- Nswoj每日一题:Magic Pen
- aar' is not a valid maven coordinate
- 从多方位考虑来选择合适的Linux服务器