【Python机器学习】主成分分析(PCA)

主成分分析(PCA)是一种旋转数据集的方法,旋转后的数特征在统计上不相关。在做完这种旋转之后,通常是根据新特征对解释数据的重要性来选择它的一个子集。

举例:

import mglearn.plots
import matplotlib.pyplot as pltmglearn.plots.plot_pca_illustration()plt.show()

第一张图(左上)显示的是原始数据点。用不同颜色区分。算法首先是方差最大的方向,将其标记成(component 1)。这是数据中包含信息最多的方向,换句话说,沿着这个方向的特征之间最为相关。然后,算法找到与第一个方向成直角、且包含最多信息的方向。在二维空间中,只有一个成直角的方向,但是在更高维的空间会存在(无穷)多的正交方向。

利用这一过程找到的方向被称为主成分,因为它们是数据方差的主要方向。一般来说,主成分的个数与原始特征相同。

第二张图(右上)显示的是同样数据,但将其旋转,使得第一主成分与x轴平行且第二主成分与y轴平行。在旋转之前,从数据中减去平均值,使得变换后的数据以零为中心。在PCA找到的选择中,两个坐标轴是不相关的。也就是说,对于这种数据表示,除了对角线,相关矩阵全部为零。

通过只保留一部分主成分来使用PCA进行降维。在这个例子中,我们可以仅保留第一个主成分,也就是左下图。这将数据从二维数据集降为一维数据集。但要注意的是,我们没有保留原始特征之一,而是找到了第一主成分的方向。

最后,反向旋转并将平均值重新加到数据中,就会得到右下图。这些数据点位于原始特征空间中,但我们仅保留了第一主成分中包含的信息。这种变换有时用于去除数据中的噪声影响,或者将主成分中保留的那部分信息可视化。

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

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

相关文章

逐步更新动画混合参数(Blend)使其平滑地过渡到目标值

1.具体实现 逐步更新一个动画混合参数(Blend),使其平滑地过渡到目标值,可以实现角色动作的平滑过渡,比如从走路过渡到跑步。 private float currentBleng;private float targetBlend;public float accelerSpeed 5;//…

(delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(标准类的泛型方法)

14.2.2 标准类的泛型方法 ​ 使用泛型类型定义类可能是最常见的情况,但泛型类型也可以用于非泛型类。换句话说,一个普通的类也可以有一个泛型方法。在这种情况下,不仅要在创建类的实例时为泛型占位符指定类型,还要在调用方法时指…

OCP学习笔记-007 SQL语言之一:DQL

1. DQL - Data Query Language 命令行提示符修改 SQL> set time on 10:33:58 SQL> define DEFINE _DATE = "11-DEC-22" (CHAR) DEFINE _CONNECT_IDENTIFIER = "orcl" (CHAR) DEFINE _USER = "SYS" (CHAR) DEFINE _P…

python tqdm怎么安装

tqdm是一个显示循环的进度条的库。taqadum, تقدّم)在阿拉伯语中的意思是进展。tqdm可以在长循环中添加一个进度提示信息,用户只需要封装任意的迭代器 tqdm(iterator),是一个快速、扩展性强的进度条工具库。 tqdm库的安装 在CMD窗口下输…

利用梯度提升树分类法实现乳腺癌数据集分类

目录 1. 作者介绍2. 梯度提升树算法2.1 Boosting 算法2.2 Boosting Tree (提升树)2.3 梯度提升树(Gradient Boosting Tree) 3. 利用梯度提升树分类法实现乳腺癌数据集分类实验3.1 乳腺癌数据集介绍3.2 实验过程3.3 实验结果3.4 完…

【Microelectronic Systems】期末速通

PART1 嵌入式系统概述与玩转mbed 1 嵌入式系统,微控制器,与ARM 1.1什么是嵌入式系统? 微处理器不仅仅存在于通用计算机中,也可以安置在一些不需要计算的设备内部,比如洗衣机,摄像机。微处理器常常可以控制…

K-means聚类模型介绍与应用

一、介绍 K-means聚类模型是一种常用的无监督学习算法,用于将数据集划分为K个不同的簇,使得簇内的数据点相似度最大化,而不同簇之间的数据点相似度最小化。K-means算法的主要思想是:每个簇具有一个中心点,通过计算每个数据点到中心点的距离,将数据点分配给距离最近的中心…

​【JS重点知识04】JS执行机制(重点面试题)

学前案例: console.log(111); setTimeout(function () {console.log(222); }, 1000) console.log(333); //输出结果:1111 333 222 console.log(111); setTimeout(function () {console.log(222); }, 0) console.log(333); //输出结果:111 33…

Django 里的表格内容做修改

当Django里表格内容需要做修改&#xff0c;可以这么操作。 先看效果图 修改后的表格 1. 先得在 asset_list.html 里修改。你们的html有可能跟我不一样 <table border"1px"><thead><tr><th>ID</th><th>标题</th><th…

AVL树【C++实现】

文章目录 AVL树的概念AVL树节点的定义AVL树的插入AVL树的旋转新节点插入较高右子树的右侧---右右&#xff1a;左单旋新节点插入较高左子树的左侧---左左&#xff1a;右单旋新节点插入较高左子树的右侧---左右&#xff1a;先左单旋再右单旋新节点插入较高右子树的左侧---右左&am…

Java 的动态代理是基于什么原理?

Java的动态代理是基于以下原理实现的: 代理模式: 代理模式是一种设计模式,通过创建一个代理对象来控制对真实对象的访问。代理对象可以在调用真实对象之前或之后增加额外的逻辑,比如权限验证、记录日志等。代理模式的主要目的是在不修改原有代码的基础上,扩展对象的行为。…

【C++课程学习】:C++入门(函数重载)

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;C课程学习 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 &#x1f308;函数重载&#xff1a; &#x1f349;1.参数个数不同&#xff1a; &#x1f349;2.参数…

ceph对象储存的使用

radosgw-admin user create --uid“user1” --display-name“user1” #创建用户 sudo apt install s3cmd cephadminceph-mgr01:~/ceph-cluster/s3$ s3cmd --configure Enter new values or accept defaults in brackets with Enter. Refer to user manual for detailed desc…

Visual C++ Redistributable下载

安装程序的时候提示丢失mfc140u.dll 如下图,查了资料说可以下载Visual C Redistributable来进行处理 下载Visual C Redistributable 1.打开网站 https://www.microsoft.com/zh-cn/download/details.aspx?id48145&751be11f-ede8-5a0c-058c-2ee190a24fa6True) 2.点击下载 …

QVariant用法介绍

一.概述 1.QVariant是Qt中一个强大的变体类&#xff0c;提供了一种通用的方式来存储Qt对象及其他类的值&#xff0c;可以以类似于指针的方式存储任意类型的值。 由于QVariant是一个通用的类型&#xff0c;因此可以在不丢失语义的情况下存储几乎所有数据类型。作为一个变体类型…

Java面试题:Redis持久化问题

Redis持久化问题 RDB (Redis Database Backup File) Redis数据快照 将内存中的所有数据都记录到磁盘中做快照 当Redis实例故障重启时,从磁盘读取快照文件恢复数据 使用 save/bgsave命令进行手动快照 save使用主进程执行RDB,对所有命令都进行阻塞 bgsave使用子进程执行R…

创新案例 | AI数据驱动下的全域数字化转型的五大关键洞见

近年来通过全域数字化转型在竞争激烈的市场中脱颖而出。传统零食行业面临市场竞争加剧和消费者需求多样化的挑战&#xff0c;如何利用数据驱动和AI技术&#xff0c;能更好地实现会员运营效率和用户满意度的显著提升呢&#xff1f;本文将探讨全域数字化转型的五大关键洞见&#…

【C++】STL中List的基本功能的模拟实现

前言&#xff1a;在前面学习了STL中list的使用方法&#xff0c;现在我们就进一步的讲解List的一些基本功能的模拟实现&#xff0c;这一讲博主认为是最近比较难的一个地方&#xff0c;各位一起加油。 &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x1f49e; &#x1f449; …

Excel 交叉表的格转成列,行转成格

Excel里交叉表的左表头是卡车号&#xff0c;上表头是工作&#xff0c;交叉格是工作编号。 ABCD1Truck NumberJob1Job2Job3271592859285928372395859282971473297159282971 要求&#xff1a;将交叉格转为列&#xff0c;左表头转为格。 ABC1297139585928272727137371473715726…

Java注解和反射——反射概述

Reflection&#xff08;反射&#xff09;是Java被视为动态语言的关键&#xff0c;反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息&#xff0c;并能直接操作任意对象的内部属性及方法。 Class c Class.forName("java.lang.String") 加载完类…