机器学习——降维算法PCA和SVD(sklearn)

目录

一、基础认识

1. 介绍

2. 认识 “ 维度 ”

(1)数组和Series

(2)DataFrame 表

(3)图像

3. 降维思想

4. 降维步骤

二、降维算法(PCA)

1. PCA实现

(1)PCA参数

(2)PCA属性

(3)PCA接口

2. PCA中的SVD

3. 训练流程

4. 补充

三、学习中产生的疑问,及文心一言回答

1. PCA中的components_属性

一、基础认识

1. 介绍

        与特征选择类似,我们可以 用不同的特征提取技术来减少数据集的特征数量。特征选择和特征提取的区别在于,当我们用诸如 逆序选择之类的特征选择算法 时,数据集的原始特征 保持不变,而当我们用 特征提取 方法时,会将数据变换 或投影到 新特征空间。在降维的背景下,我们可以 把特征提取理解为 数据压缩的一种方法,其目的是 保持大部分的相关信息

        在实际应用中,特征提取 不仅可以优化存储空间 或 机器学习算法 的计算效率,而且还可以 通过减少 维数 提高预测性能,尤其是当我们 处理非正则化 模型的时候。

2. 认识 “ 维度 ”

(1)数组和Series

        对于 数组 和 Series来说,维度就是功能shape返回的结果,shape中 返回了 几个数字,就是几维。

(2)DataFrame 表

        数组中的 每一张表,都可以是 一个特征矩阵 或 一个 DataFrame,表中 行是 样本,列 是特征。针对每一张表,维度 指的是 样本的数量 或 特征的数量,一般无特别说明,指的都是特征的数量。除了索引之外,一个特征是一维,两个特征是二维,n 个特征是 n维。

(3)图像

        对图像 来说,维度就是图像中特征向量的数量。特征向量可以理解为是 坐标轴,一个特征向量定义一条直线,是 一维,两个相互垂直的特征向量定义一个 平面,即一个直角坐标系,就是二维,三个相互垂直的特征向量定义一个空间,即一个立体直角坐标系,就是三维。三个以上的特征向量相互垂直,定义人眼无法看见,也无法想象的高维空间。

        降维算法中的 “ 降维 ”,指的是 降低 特征矩阵中 特征的 数量。

3. 降维思想

        在降维过程中,我们会 减少特征的 数量,这意味着 删除数据,数据量 变少则 表示模型 可以获取的 信息会变少,模型的表现 可能会因此 受影响。同时,在高维数据中,必然有一些无效信息(比如噪音),或者一些重复信息(比如一些特征可能会线性相关)。

        我们希望能够找出一种办法来帮助我们衡量特征上所带的信息量,让我们在降维的过程中,能够即减少特征的数量,又保留大部分有效信息

        将那些带有重复信息的特征合并,并删除那些带无效信息的特征,逐浙创造出能够代表原特征矩阵大部分信息的,特征更少的,新特征矩阵。

        现在有一组简单的数据,有特征 x1 和 x2,三个样本数据的坐标点分别为(1,1),(2,2),(3,3)。我们 可以让 x1 和 x2 分别作为 两个特征向量,很轻松地用一个 二维平面来描述 这组数据。这组数据 现在 每个特征的 均值都为 2,特征的数据一模一样,因此 方差也都为1,数据的 方差总和 是 2。

        现在我们的 目标 是:只用 一个特征向量 来描述这组数据,即将 二维数据降为 一维数据,并且尽可能地 保留信息量,即 让数据的 总方差 尽量靠近 2。        


        据图所知,我们根据 信息含量的排序,取信息含量 最大的 一个特征,可以将 x2* 删除,同时也删除图中的 x2* 特征向量,剩下的 x1* 就代表了曾经需要 两个特征来代表的 三个样本点。 通过 旋转原有 特征向量组成的 坐标轴 来找到 新特征向量 和 新坐标平面,我们 将三个样本点 的信息 压缩到了 一条直线上,实现了 二维变一维,并且尽量保留原始数据的信息。—个成功的降维,就实现了。

4. 降维步骤

(1)输入原数据,结构为(m,n)。找出原本的n个特征向量构成的n维空间V。

(2)决定降维后的特征数量:k。

(3)通过某种变化,找出n个新的特征向量,以及它们构成的新n维空间V。

(4)找出原始数据在新特征空间V中的n个新特征向量上对应的值,即“将数据映射到新空间中”。

(5)选取前k个信息量最大的特征,删掉没有被选中的特征,成功将n维空间V降为k维。

        在步骤(3)当中,我们用来找出 n 个 新特征向量,让 数据 能够 被压缩到 少数特征 上并且 总信息量 不损失太多的技术 就是 矩阵分解,PCA 和 SVD 是 两种不同的 降维算法,但他们都 遵从上面的 过程来 实现降维,只是 两种算法中 矩阵分解的方法 不同,信息量的衡 量 指标不同。

二、降维算法(PCA)

        涉及sklearn库:decomposition

1. PCA实现

        class sklearn.decomposition.PCA (n_components=None, copy=True, whiten=False, svdl solver=auto',tol=0.0,iterated_power=‘auto’,random_state=None)

(1)PCA参数

(2)PCA属性

(3)PCA接口

2. PCA中的SVD

        对于任意(m, n)的输入矩阵 A,SVD 分解 结果为:

        分解结果中 U 为 左奇异矩阵S 为 奇异值矩阵,除 主对角线上的元素外全为 0,主对角线上的每个元素都称为 奇异值,V 为右 奇异矩阵

        右奇异矩阵V有着如下性质:

        k 就是 n_components,即 我们降维后希望得到的 维度。若 X 为(m,n)的 特征矩阵,V 就是结构为(n,n)的矩阵,取这个矩阵的前 k 行(进行切片),即将 V 转换为结构为(k,n)的矩阵,与原特征矩阵 X 相乘,即可得到降维后的 特征矩阵 Xdr。

        这是说,奇异值分解 可以 不计算 协方差矩阵 等 结构复杂计算冗长的 矩阵,就直接 求出 新特征空间 和 降维后 的 特征矩阵。所以 SVD 在矩阵分解中的 过程比 PCA 简单快速。

3. 训练流程

        通过 SVD 和 PCA 的合作,sklearn 实现了一种计算更快 更简单,但效果却很好的 “ 合作降维 ”。

4. 补充

  (1)在新的特征矩阵生成之前,我们无法知晓 PCA 都建立了怎样的 新特征向量,新特征矩阵生成之后也 不具有可读性,我们 无法判断 新特征矩阵的特征 是 从原数据中的 什么特征组合 而来,新特征带有 原始数据的信息,却 已经不是 原数据上代表着 的含义了。以 PCA 为代表的 降维算法因此是 特征创造 (feature creation,或 feature construction) 的一种。

  (2)inverse_transform 并没有实现数据的 完全逆转。这是因为,在降维的时候,部分信息 已经被舍奔了,Xdr 中往往不会包含原数据 100% 的信息,所以在 逆转的时候,即 便维度升高,原数据中 已经被舍弃的信息也不可能再回来了。所以,降维 不是完全 可逆的。( PCA 可以 对噪音进行过滤)

三、学习中产生的疑问,及文心一言回答

1. PCA中的components_属性

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/48469.shtml

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

相关文章

java转义文本中的HTML字符为安全的字

java转义文本中的HTML字符为安全的字 &#xff0c;以下字符被转义&#xff1a;替换为 (&apos; doesnt work in HTML4) " 替换为 &quot; & 替换为 &amp; < 替换为 < > 替换为 >1.先添加hutool依赖到pom <dependency><groupId>cn…

VSCode部署Pytorch机器学习框架使用Anaconda(Window版)

目录 1. 配置Anaconda1.1下载安装包1. Anaconda官网下载2, 安装Anaconda 1.2 创建虚拟环境1.3 常用命令Conda 命令调试和日常维护 1.4 可能遇到的问题执行上述步骤后虚拟环境仍在C盘 2. 配置cuda2.1 查看显卡支持的cuda版本2.2 下载对应cuda版本2.3 下载对应的pytorch可能出现的…

【数据结构】二叉树OJ题_对称二叉树_另一棵的子树

对称二叉树 题目 101. 对称二叉树 - 力扣&#xff08;LeetCode&#xff09; 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2…

【ECharts】使用 ECharts 处理不同时间节点的数据系列展示

使用 ECharts 处理不同时间节点的数据系列展示 在数据可视化中&#xff0c;我们经常遇到这样的问题&#xff1a;不同数据系列的数据点在时间轴上并不对齐。这种情况下&#xff0c;如果直接在 ECharts 中展示&#xff0c;图表可能会出现混乱或不准确。本文将通过一个示例代码&a…

C#与C++交互开发系列(四):使用C++/CLI进行互操作

欢迎来到C#与C交互开发系列的第四篇。在这篇博客中&#xff0c;我们将深入探讨使用C/CLI进行互操作的方法和技巧。C/CLI&#xff08;Common Language Infrastructure&#xff09;是C与.NET框架之间的桥梁&#xff0c;能够让C代码与托管代码无缝集成。 4.1 什么是C/CLI&#xf…

【源码阅读】Sony的go breaker熔断器源码探究

文章目录 背景源码分析总结 背景 在微服务时代&#xff0c;服务和服务之间调用、跨部门调用都是很常见的事&#xff0c;但这些调用都存在很多不确定因素&#xff0c;如核心服务A依赖的部门B服务挂掉了&#xff0c;那么A本身的功能将会受到直接的影响&#xff0c;而这些都会影响…

GaussianPro使用笔记

1. 介绍 GaussianPro: 3D Gaussian Splatting with Progressive Propagation 3D高斯分布(3DGS)最近以其高保真度和效率彻底改变了神经渲染领域。然而&#xff0c;3DGS在很大程度上依赖于运动结构&#xff08;SfM&#xff09;技术生成的初始化点云。当处理不可避免地包含无纹理…

<数据集>手势识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;2400张 标注数量(xml文件个数)&#xff1a;2400 标注数量(txt文件个数)&#xff1a;2400 标注类别数&#xff1a;5 标注类别名称&#xff1a;[fist, no_gesture, like, ok, palm] 序号类别名称图片数框数1fist597…

Pycharm 和虚拟环境的那些事?

背景: 我既有 python 又有Anaconda Pycharm新建虚拟环境: 只说两种方式 通过Virualenv Environment新建: 这里我们勾选上 Make available to all projects ,之后点击&#x1f197; 然后可以发现只有非常少的包,因为没有勾选继承 编译器的包 创建的虚拟环境一般目录如下&…

Sparse4D-v3:稀疏感知的性能优化及端到端拓展

极致的感知性能与极简的感知pipeline一直是牵引我们持续向前的目标。为了实现该目标&#xff0c;打造一个性能优异的端到端感知模型是重中之重&#xff0c;充分发挥深度神经网络数据闭环的作用&#xff0c;才能打破当前感知系统的性能上限&#xff0c;解决更多的corner case&am…

下载最新版Anaconda、安装、更换源、配置虚拟环境并在vscode中使用

文章目录 进入官网进入下载页安装更换源配置虚拟环境env安装包requests在vscode中使用虚拟环境 进入官网 https://repo.anaconda.com/ 或进入清华大学下载 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 进入下载页 安装 更换源 查看已经存在的镜像源 bash cond…

物联网在养殖业领域的应用——案例分析

作者主页: 知孤云出岫 目录 作者主页:物联网在养殖业领域的应用——案例分析背景技术架构硬件设置连接多种传感器到微控制器 代码实现1. Arduino代码&#xff1a;采集多种传感器数据并上传到Thingspeak2. Python代码&#xff1a;从Thingspeak获取数据并进行综合分析和可视化 …

大模型学习笔记十二:AI产品部署

文章目录 一、如何选择GPU和云服务器厂商&#xff0c;追求最高性价比1&#xff09;根据场景选择GPU2&#xff09;训练或微调所需显卡&#xff08;以Falcon为例子&#xff09;3&#xff09;服务器价格计算器 二、全球大模型了解1&#xff09;llm所有模型2&#xff09;模型综合排…

WSL2 Centos7 Docker服务启动失败怎么办?

wsl 安装的CentOS7镜像,安装了Docker之后,发现用systemctl start docker 无法将docker启动起来。 解决办法 1、编辑文件 vim /usr/lib/systemd/system/docker.service将13行注释掉,然后在下面新增14行的内容。然后保存退出。 2、再次验证 可以发现,我们已经可以正常通过s…

offer题目51:数组中的逆序对

题目描述&#xff1a;在数组中的两个数字&#xff0c;如果前面一个数字大于后面的数字&#xff0c;则这两个数字组成一个逆序对。输入一个数组&#xff0c;求出这个数组中的逆序对的总数。例如&#xff0c;在数组{7,5,6,4}中&#xff0c;一共存在5个逆序对&#xff0c;分别是(7…

给Wordpress添加评分功能到评论表单

今天要 给你的 Wordpress 添加评分功能到评论表单 吗&#xff1f; 评分功能效果图 什么类型的网站需要评分&#xff1f; 资源站教程站其他&#xff0c;我也没想到。。。 但我这个网站&#xff0c;因为是电影类的网站&#xff0c;好像还是有点需要的&#xff0c;所以&#xf…

针对汽车应用而设计的SCT4026D、SCT4062K、SCT3105K、SCT3080A、SCT3060A全新系列碳化硅 (SiC) MOSFET

全新系列碳化硅 (SiC) MOSFET SCT4026DWAHRTL SCT4062KWAHRTL SCT3105KRC15 SCT3080ALHRC11 SCT3080ARC15 SCT3060ARC15 ——明佳达 AEC-Q101 SiC功率MOSFETs是汽车和开关电源的理想选择。SiC功率MOSFETs可以提高开关频率&#xff0c;减少所需的电容、电抗器和其他元件的体积…

【RAG探索第4讲】KG+RAG丨基于知识图谱优化大型语言模型方法

原文链接&#xff1a;【RAG探索第4讲】KGRAG丨基于生物医学知识图谱优化的大型语言模型提示生成方法 一、现有问题&#xff1a; LLMs在处理特定领域或高度专业化查询时缺乏专业知识&#xff0c;导致回答不够准确和可靠。 LLMs可能会产生事实错误&#xff08;即幻觉&#xff0…

【计算机视觉】siamfc论文复现

什么是目标跟踪 使用视频序列第一帧的图像(包括bounding box的位置)&#xff0c;来找出目标出现在后序帧位置的一种方法。 什么是孪生网络结构 孪生网络结构其思想是将一个训练样本(已知类别)和一个测试样本(未知类别)输入到两个CNN(这两个CNN往往是权值共享的)中&#xff0…

深入理解PHP基础【代码审计实战指南】

文章目录 基础语法单双引号的区别前后端分离数据类型PHP常量函数var_dump函数count函数print_r函数**readfile&#xff08;&#xff09;函数****file_get_contents()函数****file_put_contents()函数**header函数fopen函数fread 函数rename函数copy&#xff08;&#xff09;函数…