day21python打卡

news2025/5/11 10:14:31

知识点回顾:

  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_digits
    
    digits = 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.coloradmin.cn/o/2373039.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ERP学习(一): 用友u8安装

安装: https://www.bilibili.com/video/BV1Pp4y187ot/?spm_id_from333.337.search-card.all.click&vd_sourced514093d85ee628d1f12310b13b1e59b 我个人用vmware16,这位up已经把用友软件和环境(sqlserver2008) 都封城vmx文件了…

01 | 大模型微调 | 从0学习到实战微调 | AI发展与模型技术介绍

一、导读 作为非AI专业技术开发者(我是小小爬虫开发工程师😋) 本系列文章将围绕《大模型微调》进行学习(也是我个人学习的笔记,所以会持续更新),最后以上手实操模型微调的目的。 (本文如若有…

海康相机无损压缩

设置无损压缩得到更高的带宽和帧率!

从机器人到调度平台:超低延迟RTMP|RTSP播放器系统级部署之道

✅ 一、模块定位:跨平台、超低延迟、系统级稳定的音视频直播播放器内核 在无人机、机器人、远程操控手柄等场景中,低延迟的 RTSP/RTMP 播放器并不是“可有可无的体验优化”,而是系统能否闭环、操控是否安全的关键组成。 Windows和安卓播放RT…

研发效率破局之道阅读总结(5)管理文化

研发效率破局之道阅读总结(5)管理文化 Author: Once Day Date: 2025年5月10日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文章可参考专栏: 程序的艺术_Once-Day…

单因子实验 方差分析

本文是实验设计与分析(第6版,Montgomery著傅珏生译)第3章单因子实验 方差分析python解决方案。本文尽量避免重复书中的理论,着于提供python解决方案,并与原书的运算结果进行对比。您可以从 下载实验设计与分析(第6版&a…

Bitacora:基因组组件中基因家族识别和注释的综合工具

软件教程 | Bitacora:基因组组件中基因家族识别和注释的综合工具 https://zhangzl96.github.io/tags#生物信息工具) 📅 官方地址:https://github.com/molevol-ub/bitacora 🔬 教程版本:BITACORA 1.4 📋 …

【WebRTC-13】是在哪,什么时候,创建编解码器?

Android-RTC系列软重启,改变以往细读源代码的方式 改为 带上实际问题分析代码。增加实用性,方便形成肌肉记忆。同时不分种类、不分难易程度,在线征集问题切入点。 问题:编解码器的关键实体类是什么?在哪里&什么时候…

青少年编程与数学 02-019 Rust 编程基础 01课题、环境准备

青少年编程与数学 02-019 Rust 编程基础 01课题、环境准备 一、Rust核心特性应用场景开发工具社区与生态 二、Rust 和 Python 比较1. **内存安全与并发编程**2. **性能**3. **零成本抽象**4. **跨平台支持**5. **社区与生态系统**6. **错误处理**7. **安全性**适用场景总结 三、…

Redis持久化存储介质评估:NFS与Ceph的适用性分析

#作者:朱雷 文章目录 一、背景二、Redis持久化的必要性与影响1. 持久化的必要性2. 性能与稳定性问题 三、NFS作为持久化存储介质的问题1. 性能瓶颈2. 数据一致性问题3. 存储服务单点故障4. 高延迟影响持久化效率.5. 吞吐量瓶颈 四、Ceph作为持久化存储介质的问题1.…

Ceph 原理与集群配置

一、Ceph 工作原理 1.1.为什么学习 Ceph? 在学习了 NFS 存储之后,我们仍然需要学习 Ceph 存储。这主要是因为不同的存储系统适用于不同的场景,NFS 虽然有其适用之处,但也存在一定的局限性。而 Ceph 能够满足现代分布式、大规模、…

天线的PCB设计

目录 天线模块设计的重要性 天线模块的PCB设计 天线模块设计的重要性 当智能手表突然断连、无人机信号飘忽不定——你可能正在经历一场来自天线模块的"无声抗议"。这个隐藏在电子设备深处的关键组件,就像数字世界的隐形信使,用毫米级的精密结…

C++笔记-set和map的使用(包含multiset和multimap的讲解)

1.序列式容器和关联式容器 前面我们已经接触过STL中的部分容器如:string、vector、list、deque、array、forward_list等,这些容器统称为序列式容器,因为逻辑结构为线性序列的数据结构,两个位置存储的值之间一般没有紧密的关联关系&#xff0…

Linux `ifconfig` 指令深度解析与替代方案指南

Linux `ifconfig` 指令深度解析与替代方案指南 一、核心功能与现状1. 基础作用2. 版本适配二、基础语法与常用操作1. 标准语法2. 常用操作速查显示所有接口信息启用/禁用接口配置IPv4地址修改MAC地址(临时)三、高级配置技巧1. 虚拟接口创建2. MTU调整3. 多播配置4. ARP控制四…

Python pandas 向excel追加数据,不覆盖之前的数据

最近突然看了一下pandas向excel追加数据的方法,发现有很多人出了一些馊主意; 比如用concat,append等方法,这种方法的会先将旧数据df_1读取到内存,再把新数据df_2与旧的合并,形成df_new,再覆盖写入,消耗和速…

【金仓数据库征文】政府项目数据库迁移:从MySQL 5.7到KingbaseES的蜕变之路

摘要:本文详细阐述了政府项目中将 MySQL 5.7 数据库迁移至 KingbaseES 的全过程,涵盖迁移前的环境评估、数据梳理和工具准备,迁移实战中的数据源与目标库连接配置、迁移任务详细设定、执行迁移与过程监控,以及迁移后的质量验证、系…

Go语言——goflow工作流使用

一、引入依赖 这个很坑,他不允许连接带密码的redis,只能使用不带密码的redis,要带密码的话得自己改一下源代码,无语 go get github.com/s8sg/goflow二、画出我们的工作流程 三、编写代码 package mainimport ("encoding/j…

yarn npm pnpm

1 下载方式 npm 之前串行下载 现在并行下载 yarn 并行下载 加入缓存复用 pnpm 硬连接 避免重复下载,先检查本地是否存在,存在的话直接连接过去

Block Styler——字符串控件

字符串控件的应用 参考官方帮助案例:(这个方式感觉更好,第二种方式也可以)E:\NX1980\UGOPEN\SampleNXOpenApplications\C\BlockStyler\ColoredBlock 普通格式: 读取: //方法一 string0->GetProperti…

LangGraph(三)——添加记忆

目录 1. 创建MemorySaver检查指针2. 构建并编译Graph3. 与聊天机器人互动4. 问一个后续问题5. 检查State参考 1. 创建MemorySaver检查指针 创建MemorySaver检查指针: from langgraph.checkpoint.memory import MemorySavermemory MemorySaver()这是位于内存中的检…