当前位置: 首页 > news >正文

day21python打卡

知识点回顾:

  1. LDA线性判别
  2. PCA主成分分析
  3. t-sne降维

还有一些其他的降维方式,也就是最重要的词向量的加工,我们未来再说

作业:

自由作业:探索下什么时候用到降维?降维的主要应用?或者让ai给你出题,群里的同学互相学习下。可以考虑对比下在某些特定数据集上t-sne的可视化和pca可视化的区别。

降维通常在以下场景中使用:

  1. 高维数据处理:当数据特征数量过多(如基因数据、图像像素、文本词向量)时,降维可减少计算复杂度,缓解“维度灾难”。
  2. 可视化需求:将高维数据降至2D/3D以便直观展示,如探索数据分布或聚类结构。
  3. 去噪与特征提取:去除冗余或噪声特征,保留主要信息,例如PCA通过保留高方差成分实现去噪。
  4. 模型效率提升:减少特征数量可加速模型训练,降低过拟合风险(尤其在样本量较少时)。
  5. 数据压缩:节省存储空间,简化数据传输。

降维的主要应用

  1. 数据可视化:如用t-SNE或PCA将MNIST手写数字降至2D,观察类别分离。
  2. 图像处理:人脸识别中,PCA(特征脸方法)提取主要特征,减少计算量。
  3. 自然语言处理:词嵌入降维可视化(如Word2Vec + t-SNE展示语义聚类)。
  4. 生物信息学:基因表达数据分析,识别关键生物标记。
  5. 推荐系统:矩阵分解(如SVD)降低用户-物品交互矩阵的维度,提取潜在因子。
  6. 信号处理:去除冗余信号成分,如EEG数据中的噪声过滤。

PCA vs. t-SNE 可视化对比(以MNIST为例)

特性PCAt-SNE
方法类型线性降维非线性降维
目标保留全局方差,最大化数据分布保留局部结构,优化邻近点相似度
计算速度快(适合大数据)慢(适合小数据,复杂度O(N²))
参数敏感性无参数(仅需指定主成分数)需调参(困惑度、学习率等)
结果稳定性确定性强,结果唯一随机初始化导致结果可能变化
可视化效果全局结构清晰,但类别可能重叠局部聚类明显,类别分离更清晰

示例结果

  • PCA:MNIST前两个主成分可能显示数字按书写方向(如笔画复杂度)分布,但不同数字区域重叠较多。
  • t-SNE:MNIST可视化后,不同数字形成独立簇,聚类边界更明确,但全局结构(如数字间的相对位置)可能不保留。

实战建议

  1. 选择场景

    • 优先用PCA进行快速初步降维、去噪或特征压缩。
    • t-SNEUMAP探索复杂数据聚类、流形结构(如单细胞RNA测序数据)。
  2. 参数调整

    • PCA:选择累计方差贡献率(如95%)决定成分数。
    • t-SNE:调整困惑度(通常5-50)、学习率(避免过大)和迭代次数。
  3. 代码示例(Python)

    from sklearn.manifold import TSNE
    from sklearn.decomposition import PCA
    import matplotlib.pyplot as plt
    from sklearn.datasets import load_digitsdigits = load_digits()
    X, y = digits.data, digits.target# PCA可视化
    pca = PCA(n_components=2)
    X_pca = pca.fit_transform(X)
    plt.scatter(X_pca[:,0], X_pca[:,1], c=y, cmap='tab10')
    plt.title('PCA Visualization of MNIST')
    plt.show()# t-SNE可视化
    tsne = TSNE(n_components=2, random_state=42)
    X_tsne = tsne.fit_transform(X)
    plt.scatter(X_tsne[:,0], X_tsne[:,1], c=y, cmap='tab10')
    plt.title('t-SNE Visualization of MNIST')
    plt.show()
    

总结

降维是处理高维数据的核心工具,选择合适方法需权衡数据特性(线性/非线性)、任务目标(可视化/去噪/提速)和计算资源。PCA与t-SNE的对比体现了线性与非线性方法在保留数据结构上的本质差异。

浙大疏锦行

http://www.xdnf.cn/news/375679.html

相关文章:

  • 【Linux第三章】vim
  • HTTP/2概览及内核解析
  • excel大表导入数据库
  • comfyu BiRefNet-General模型下载及存放地方
  • JS正则表达式介绍(JavaScript正则表达式)
  • 《Python星球日记》 第51天:神经网络基础
  • 边缘计算从专家到小白
  • iperf3的介绍与舒勇
  • Kubernetes 生产实战(十五):生产环境敏感信息纳入Secret管理指南
  • MLOps 详解
  • 汇编语言的温度魔法:单总线温度采集与显示的奇幻之旅
  • Java动态代理超详细解析:三步+内存图(堆栈分析)
  • 批量统计PDF页数,统计图像属性
  • dify插件接入fastmcp示例
  • Flink 实时数据一致性与 Exactly-Once 语义保障实战
  • Linux架构篇、第四章_ELK与EFK-7.17.9的日志管理
  • 深入解析Vue3中ref与reactive的区别及源码实现
  • PPT图表怎么制作?说5款自己使用过的PPT图表制作工具
  • 《Python星球日记》 第55天:迁移学习与预训练模型
  • Linux系统管理与编程16:PXE自动化安装部署centos7.9操作系统
  • 计算机设计大赛山东省赛区软件开发赛道线上答辩复盘
  • 基于STM32的甲醛检测
  • 金丝猴食品:智能中枢AI-COP构建全链路数智化运营体系
  • 如何快速分享服务器上的文件
  • SemanticSplitterNodeParser 和 Sentence-BERT 的区别和联系是什么
  • Spring Security 深度解析:打造坚不可摧的用户认证与授权系统
  • 双同步坐标锁相环DDSRF-PLL原理说明
  • 基于 Q-learning 的城市场景无人机三维路径规划算法研究,可以自定义地图,提供完整MATLAB代码
  • Pytorch应用 小记 第一回:基于ResNet网络的图像定位
  • LSP里氏替换原则