这里主要介绍LDA和PCA的区别:

相同点:

1)两者均可以对数据进行降维。

2)两者在降维时均使用了矩阵特征分解的思想。

3)两者都假设数据符合高斯分布。

不同点:

1)LDA是有监督的降维方法,而PCA是无监督的降维方法

2)LDA降维最多降到类别数k-1的维数,而PCA没有这个限制。

3)LDA除了可以用于降维,还可以用于分类。

4)LDA选择分类性能最好的投影方向,而PCA选择样本点投影具有最大方差的方向。

LDA和PCA所用库:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D  # 用来绘制3D图
from sklearn.decomposition import PCA
from pca_my import loaddataset
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA

lda代码如下:

def lda_():data = loaddataset('txt/10/all/500_all.txt')x = data[:, 1:]y = data[:, 0].astype(int)y = np.array(y).reshape(-1, 1)lda1 = LDA(n_components=2)x_r = lda1.fit(x, y).transform(x)fig2 = plt.figure()ax2 = fig2.add_subplot(111)ax2.scatter(x_r[:, 0], x_r[:, 1], marker='o', c=y)fig2.savefig('picture/f_lda.png', bbox_inches='tight')

由于lda只可以最多降维到k-1类特征,我的数据集只有3类,所以我设置n_components=2,最后结果如下:

pca代码如下:

def pca_():datamat = loaddataset('txt/10/all/0_all.txt')x = datamat[:, 1:]y = datamat[:, 0].astype(int)y = np.array(y).reshape(-1, 1)datamat = xpca1 = PCA(n_components=2)  # n_components表示保留主成分个数pca1.fit(datamat)  # 用数据datamet来训练PCA模型lowdata = pca1.transform(datamat)  # 对数据归一化"""fig = plt.figure()ax1 = Axes3D(fig)#ax1.scatter(reconmat1[:, 0], reconmat1[:, 1], reconmat1[:, 2], cmap='Blues')#ax1.scatter(reconmat4[:, 0], reconmat4[:, 1], reconmat4[:, 2], cmap='red')#ax1.scatter(reconmat7[:, 0], reconmat7[:, 1], reconmat7[:, 2], cmap='#bcbd22')fig.savefig('picture/f3D.png', bbox_inches='tight')"""fig1 = plt.figure()ax = fig1.add_subplot(111)ax.scatter(lowdata[:, 0], lowdata[:, 1], marker='o', c=y)# fig1.show()fig1.savefig('picture/f2D.png', bbox_inches='tight')


可以看出我这里的实验,使用LDA比PCA效果要好一点,对于数据有类别的,建议使用LDA进行降维。

LDA和PCA降维的区别相关推荐

  1. PCA(主成分分析)+LDA(线性判别分析)+区别

    PCA(主成分分析)+LDA(线性判别分析)+区别 一.LDA算法 基本思想:LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的.这点和PCA不同.PCA是不考虑样本类别输出的 ...

  2. 基于PCA与LDA的数据降维实践

    基于PCA与LDA的数据降维实践 描述 数据降维(Dimension Reduction)是降低数据冗余.消除噪音数据的干扰.提取有效特征.提升模型的效率和准确性的有效途径, PCA(主成分分析)和L ...

  3. LDA与PCA数据降维算法理论与实现(基于python)

    数据降维 一. 线性判别分析(LDA) linear Discriminant Analysis 用途: 数据预处理中的降维,分类任务 目标: LDA关心的是能够最大化类间区分度的坐标轴成分 将特征空 ...

  4. 12- 降维算法 (PCA降维/LDA分类/NMF) (数据处理)

    数据降维就是一种对高维度特征数据预处理方法.降维是将高维度的数据保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的. PCA算法有两种实现方法: 基于特征值分解协方差矩阵实 ...

  5. 10 降维算法(PCA降维/LDA分类/NMF非负矩阵)

    数据降维简介 降维就是一种对高维度特征数据预处理方法.降维是将高维度的数据保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的. 降维具有如下一些优点: 减少所需的存储空间. ...

  6. 【机器学习】基于PCA/LDA的数据降维和可视化(二维+三维)

    基于PCA/LDA的数据降维和可视化 Introduction Project Intro File Intro Tools Intro Code&Dataset Link Process P ...

  7. python pca降维_机器学习的降维打击

    文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 来源 | SAMshare(id:SAMshare) 作者 | samshare "本次主要 ...

  8. python pca降维_MLK | 机器学习的降维quot;打击quot;

    "MLK,即Machine Learning Knowledge,本专栏在于对机器学习的重点知识做一次梳理,便于日后温习,内容主要来自于<百面机器学习>一书,结合自己的经验与思考 ...

  9. 机器学习——PCA降维

    参考文章:https://zhuanlan.zhihu.com/p/77151308 PCA(Principal Component Analysis) 是一种常见的数据分析方式,常用于高维数据的降维 ...

最新文章

  1. C++中vector的使用
  2. 网络爬虫---json编码和解码
  3. BZOJ 3101: N皇后 构造
  4. 云存储基础设施的决定:公共云与私有云
  5. js数组的定义方法与基本使用
  6. 最近很火的百度MIP之 zblog改造
  7. android tag定义快捷键,Android Studio快捷键生成TAG、Log.x日志输出介绍
  8. LB-createLB整理架构图-loadbalancer-openstack F版
  9. redis的zset的底层实现_Redis中hash、set、zset有多牛?从底层告诉你数据结构原理...
  10. python计算地球重量_python – 在Tensorflow中使用Earth Mover的Distance作为损失函数
  11. 安装Google版本的金山词霸会导致播放Silverlight视频的时候IE或者是FF崩溃
  12. java 拼音 排序_java对中文(拼音)进行排序
  13. html静态网页模板如何上传,html – 如何使用模板生成静态网页?
  14. 图形学空间坐标变化之二维图形观察及变换
  15. 综合电商高保真移动端Axure原型模板
  16. html5谷歌地图,谷歌地图API和HTML 5
  17. 苹果手机永久删除的照片怎么恢复?
  18. 阿里巴巴十年Java架构师分享,会了这个知识点的人都去BAT了
  19. Ubuntu Desktop LTS - 文件完整路径
  20. Gstreamer中caps的intersect

热门文章

  1. 《顶级摄影器材》系列丛书首发式上海隆重举办
  2. PHP curl请求处理
  3. 激光点云处理的学习之路(深蓝学院)
  4. 图纸版本混乱?BOM表管理困难?看SolidWorks PLM如何高效助力产品数据管理
  5. matlab虚数的模,matlab计算带有复数的函数,最后求复数函数的模,结果里面却有...
  6. 30岁的男人学些啥技术好些?
  7. lodash-difference理解
  8. Presto(trino)就是个大坑,小心工具用错地方
  9. 原生js实现美女拼图,把美女老婆抱回家,5个美女够不够!程序员就是可以为所欲为!
  10. 2D横版跳跃游戏第一节