知其然知其所以然

  • 【写在前面】
  • 主成分分析(PCA)
    • 原理部分
    • 代码部分
    • 可视化部分
  • 线性判别分析(LDA)
    • 原理部分
    • 代码部分
    • 可视化部分
  • 独立成分分析(ICA)
    • 原理部分
    • 代码部分
    • 可视化部分
  • t-SNE降维算法
    • 原理部分
    • 代码部分
    • 可视化部分

【写在前面】

【以下使用的数据量很少很少,因此在散点图中展示不出具体算法特点,请读者自行实验。】
常用的降维算法有主成分分析(PCA)、线性判别分析(LDA)、独立成分分析(ICA)、t-SNE等。以下是这些算法的Python代码示例,分享一下我对降维的理解:

对一个样本矩阵,一是换特征,找一组新的特征来重新表示;二是减少特征,新特征的数目要远小于原特征的数目。这样一来就可以得到数量少且比较好的几个变量一构建模型。但是,降维也可能会导致信息的损失和模型的过拟合,因此需要谨慎使用。

  1. 创建数据
  2. 创建模型对象
  3. 拟合数据
  4. 转换数据
  5. 输出数据

主成分分析(PCA)

原理部分

  • 通常把转化生成的综合指标称之为主成分
  • 每个主成分都是原始变量的线性组合,且每个主成分之间互不相干
  • 主成分分析(PCA)是一种常用的数据降维技术,它通过线性变换将高维数据转换为低维数据,同时保留原始数据的主要特征。PCA的基本思想是将原始数据映射到一个新的坐标系中,使得新坐标系下数据的方差最大化。这个新坐标系的轴称为主成分,每个主成分都是原始数据中的线性组合。PCA的应用广泛,例如在图像处理、信号处理、模式识别、数据挖掘等领域中都有广泛应用。在数据分析中,PCA可以用于降低数据的维度,减少数据冗余,提高数据处理效率,同时也可以帮助我们发现数据的内在结构和规律,从而更好地理解数据。
  • 在实际应用中,PCA的步骤主要包括数据标准化、计算协方差矩阵、求解特征值和特征向量、选取主成分和投影数据等。通过PCA,我们可以得到一些重要的结果,例如主成分的贡献率、主成分的方差解释比例、主成分的系数等。这些结果可以帮助我们更好地理解数据的结构和特征,从而为后续的数据分析和建模提供更好的基础。

代码部分

from sklearn.decomposition import PCA
import numpy as np# 创建数据
X = np.array([[1, 2, 3, 6, 10, 22, 3, 2, 3], [4, 5, 6, 8, 9, 23, 5, 2, 6], [7, 8, 9, 10, 2, 24, 9, 9, 5]])# 创建PCA对象
pca = PCA(n_components=2)# 拟合数据
pca.fit(X)# 转换数据
X_new = pca.transform(X)print(X_new)

可视化部分

线性判别分析(LDA)

原理部分

线性判别分析(Linear Discriminant Analysis,简称LDA)是一种经典的监督学习算法,它既可以作为分类器,也可以作为降维技术。LDA的主要思想是将数据投影到一个低维空间中,使得不同类别之间的距离最大化,同一类别内部的距离最小化。这样可以在保留尽量多的信息的同时,将数据进行有效的分类。LDA的主要步骤包括:

  1. 计算每个类别的均值向量和整个数据集的均值向量。
  2. 计算类内散度矩阵(within-class scatter matrix)和类间散度矩阵(between-class scatter matrix)。
  3. 计算投影矩阵,将数据投影到低维空间中。
  4. 使用投影矩阵将数据进行降维或分类。

LDA的优点包括:

  1. 在保留尽量多信息的同时,可以将数据进行有效分类。
  2. 可以用于降维,减少数据维度,便于可视化和处理。
  3. 适用于高维数据集。

LDA的缺点包括:

  1. 对于非线性可分的数据集,LDA的效果会受到影响。
  2. 对于不平衡的数据集,可能会导致分类结果出现偏差。
  3. 在计算类内散度矩阵时,需要计算每个类别的协方差矩阵,如果数据维度很高,计算量会很大。

代码部分

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
import numpy as np# 创建数据
X = np.array([[1, 2, 3, 6, 10, 22, 3, 2, 3], [4, 5, 6, 8, 9, 23, 5, 2, 6], [7, 8, 9, 10, 2, 24, 9, 9, 5]])
y = np.array([0, 1, 0])# 创建LDA对象
lda = LinearDiscriminantAnalysis(n_components=1)# 拟合数据
lda.fit(X, y)# 转换数据
X_new = lda.transform(X)print(X_new)

可视化部分

独立成分分析(ICA)

原理部分

  • 在机器学习中,ICA被广泛应用于信号处理、图像处理、语音识别等领域。
  • ICA的基本思想是:假设存在一组独立的成分,它们通过线性组合形成了观测信号。通过对观测信号进行分解,可以得到独立的成分。
  • ICA的目标是找到一组线性变换,使得变换后的信号成分之间相互独立。
  • ICA的应用场景包括:语音信号分离、图像分离、生物信号分析等。例如,ICA可以用于将多个人说话的混合语音信号分离成单独的语音信号,或者将一张复杂的图像分解为不同的成分。

代码部分

from sklearn.decomposition import FastICA
import numpy as np# 创建数据
X = np.array([[1, 2, 3, 6, 10, 22, 3, 2, 3], [4, 5, 6, 8, 9, 23, 5, 2, 6], [7, 8, 9, 10, 2, 24, 9, 9, 5]])# 创建ICA对象
ica = FastICA(n_components=2)# 拟合数据
ica.fit(X)# 转换数据
X_new = ica.transform(X)print(X_new)

可视化部分

t-SNE降维算法

原理部分

  • TSNE(t-Distributed Stochastic Neighbor
    Embedding)是一种非线性降维算法,用于将高维数据降至二维或三维,以便于可视化。
  • 该算法的基本思想是,将高维数据映射到低维空间中,使得在原始空间中相似的数据点在低维空间中也保持相似,而不相似的数据点在低维空间中则距离较远。
  • TSNE算法主要分为两个步骤:首先,通过高斯核函数计算每个数据点与其它数据点之间的相似度,然后将这些相似度转化为概率分布。接着,在低维空间中,通过KL散度最小化的方法,将这些概率分布转化为新的低维空间中的概率分布。最终,通过梯度下降算法,将低维空间中的数据点的位置不断调整,使得其与高维空间中的数据点的相似度尽可能地保持一致。
  • TSNE算法的优点是能够在保持数据点之间的相对距离的同时,有效地将高维数据映射到低维空间中,从而便于可视化和分析。但是,该算法的计算复杂度较高,需要较长的计算时间和计算资源。

代码部分

from sklearn.manifold import TSNE
import numpy as np# 创建数据
X = np.array([[1, 2, 3, 6, 10, 22, 3, 2, 3], [4, 5, 6, 8, 9, 23, 5, 2, 6], [7, 8, 9, 10, 2, 24, 9, 9, 5]])# 创建t-SNE对象
tsne = TSNE(n_components=2)# 转换数据
X_new = tsne.fit_transform(X)print(X_new)

可视化部分

机器学习---降维算法相关推荐

  1. 四大机器学习降维算法:PCA、LDA、LLE、Laplacian Eigenmaps

    四大机器学习降维算法:PCA.LDA.LLE.Laplacian Eigenmaps 引言 机器学习领域中所谓的降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中.降维的本质是学习 ...

  2. 机器学习-降维算法(MDS算法)

    机器学习-降维算法(MDS算法) 一,介绍 在现实数据中,很多数据都是高纬度的,在高纬度情况下进行数据处理将会有极大的数据处理量.为了,减少计算量,常常需要缓解这种数据维度灾难,这有两种途径:降维和特 ...

  3. 机器学习降维算法六——ISOMAP(等距特征映射)

    流形学习:传统的机器学习方法中,数据点和数据点之间的距离和映射函数都是定义在欧式空间中的,然而在实际情况中,这些数据点可能不是分布在欧式空间中的,因此传统欧式空间的度量难以用于真实世界的非线性数据,从 ...

  4. 机器学习 降维算法: isomap MDS

    最近在看论文的时候看到论文中使用isomap算法把3D的人脸project到一个2D的image上.提到降维,我的第一反应就是PCA,然而PCA是典型的线性降维,无法较好的对非线性结构降维.ISOMA ...

  5. 机器学习降维算法二:LDA(Linear Discriminant Analysis)

    Linear Discriminant Analysis (也有叫做Fisher Linear Discriminant)是一种有监督的(supervised)线性降维算法.与PCA保持数据信息不同, ...

  6. 机器学习降维算法三:LLE (Locally Linear Embedding) 局部线性嵌入

    LLE Locally linear embedding(LLE)[1] 是一种非线性降维算法,它能够使降维后的数据较好地保持原有流形结构.LLE可以说是流形学习方法最经典的工作之一.很多后续的流形学 ...

  7. 机器学习降维算法四:Laplacian Eigenmaps 拉普拉斯特征映射

    继续写一点经典的降维算法,前面介绍了PCA,LDA,LLE,这里讲一讲Laplacian Eigenmaps. 其实不是说每一个算法都比前面的好,而是每一个算法都是从不同角度去看问题,因此解决问题的思 ...

  8. 机器学习降维算法五——KPCA算法

    一,介绍 现实中往往很多数据是线性不可分的,因此我们需要引入核函数把数据映射到高纬度而达到线性可分.基于核函数的主成分分析(KPCA)和主成分分析(KPCA)的步骤是一样的,只不过需要用核函数替代了原 ...

  9. 多种数据过滤与降维算法

    数据过滤 1. 缺失值比率 (Missing Values Ratio) 方法的是基于包含太多缺失值的数据列包含有用信息的可能性较少.因此,可以将数据列缺失值大于某个阈值的列去掉.阈值越高,降维方法更 ...

最新文章

  1. SAP RETAIL WA03 基于分配表创建PO报错 - No work list could be selected –
  2. 500分求助,delphi里用standred来配置dbf文件
  3. [转] Nodejs 进阶:Express 常用中间件 body-parser 实现解析
  4. c语言程序设计迷宫,C语言程序设计课程设计-迷宫.doc
  5. Nowcoder 提高组练习赛-R3
  6. MySQL 中的 FOUND_ROWS() 与 ROW_COUNT() 函数
  7. 你看不懂的spring原理是因为不知道这几个概念
  8. 【求助】windows server 2003 64位下面网卡IP总是默认为动态分派IP
  9. AI又破案!衢州城市大脑这回抓了一个抢劫犯
  10. NVIDIA DLI 深度学习培训 | 北京站年后即将开班
  11. arcgis api 3.X 几种查询方式比较
  12. JavaScript高级程序设计(第3版)中文在线阅读,也可以免费下载~
  13. windows 任务栏点击无反应,电脑没有任务栏怎么办
  14. 【Python】模拟登陆并抓取拉勾网信息(selenium+phantomjs)
  15. 刘德华中国巡回演唱会2007
  16. 【论文翻译笔记】Seamlessly Unifying Attributes and Items: Conversational Recommendation for Cold-Start User
  17. 推流拉流RMTP方案:Nginx+ffmpeg/obs+vlc/h5
  18. CTF题目: 你必须让他停下
  19. Cocos Creator - 塞尔达的3D渲染风格,能在小游戏跑起来?
  20. 计算机专业调研报告ppt,武侯区四年级调研报告 电脑基础知识 it计算机 专业资料.ppt...

热门文章

  1. gensim安装教程
  2. 福禄克DTX-1800其配件DTX-CHA002通道适配器CHANNEL更换RJ45插座小记
  3. python中用于生成随机数的函数的简单总结
  4. educoder/python第1关:学习-Python集合之应用一
  5. 突破常规限制运行asp木马(转)
  6. 【2023最新】32个web前端实战项目,练完即可就业,从入门到进阶,基础到框架,你想要的全都有,建议码住!
  7. 【数据结构】赫夫曼树与编码
  8. SSM框架介绍与搭建
  9. 第一周总结(2022.10.17~2022.10.22)
  10. 1、Swoole是什么?你可以通过swoole干些什么?