【机器学习】无监督学习算法之:主成分分析

主成分分析

  • 1、引言
  • 2、主成分分析
    • 2.1 定义
    • 2.2 原理
    • 2.3 实现方式
    • 2.4 算法公式
    • 2.5 代码示例
  • 3、总结

1、引言

小屌丝:鱼哥, 快,快。
小鱼:… 啥情况, 你可别乱喊。
小屌丝:额… 我的意思,是你该继续
小鱼:… 说清楚, 继续啥???

小屌丝:就…就是… 继续啊
小鱼:我擦… 你说清楚,不然容易误会。
小屌丝:就是继续,无监督学习啊
小鱼:我…!!!
小屌丝:咋了,鱼哥,你想成啥了?
小鱼: 没…没…没想啥。
在这里插入图片描述

小屌丝: 你咋脸红了。
小鱼:不可能, 绝对不可能, 我从不脸红。
小屌丝:不承认就不承认吧。
小鱼:… 不解释,不掩饰,安安静静的看我的书了
小屌丝:别啊,把PCA讲完啊
小鱼: 然后呢?
小屌丝: 我就不打扰你看小人书
小鱼:…

2、主成分分析

2.1 定义

主成分分析(PCA)是一种通过正交变换将原始特征空间中的线性相关变量转换为少数几个线性无关的新变量的统计方法。

这些新变量称为主成分,它们按照方差从大到小的顺序排列,第一个主成分具有最大的方差,即包含最多的变异信息,后续的主成分则依次递减。

2.2 原理

PCA的原理基于以下两个基本思想:

  • 最大方差理论:在降维后的低维空间中,样本的投影应该尽可能分开,即投影后的方差最大。
  • 最近重构性:样本点到这个超平面的距离都足够近,即尽可能使原始数据点到这个超平面的垂直距离最短。

通过这两个原则,PCA能够在降维的同时尽可能地保留原始数据中的有用信息。

2.3 实现方式

PCA的实现主要包括以下步骤:

  • 数据标准化:对原始数据进行标准化处理,消除量纲和尺度的影响。
  • 计算协方差矩阵:计算标准化后数据的协方差矩阵,该矩阵反映了各变量之间的相关性。
  • 计算协方差矩阵的特征值和特征向量:对协方差矩阵进行特征分解,得到特征值和特征向量。
  • 选择主成分:根据特征值的大小选择前k个主成分,通常选择累积贡献率达到一定阈值的特征值对应的特征向量作为主成分。
  • 转换数据:将原始数据投影到选定的主成分上,得到降维后的新数据集。

2.4 算法公式

PCA的关键公式包括

  • 协方差矩阵公式 ( Σ = 1 n − 1 ∑ i = 1 n ( x i − x ˉ ) ( x i − x ˉ ) T ) ( \Sigma = \frac{1}{n-1} \sum_{i=1}^{n} (x_i - \bar{x})(x_i - \bar{x})^T ) (Σ=n11i=1n(xixˉ)(xixˉ)T)其中 ( x i ) ( x_i ) (xi)是第i个样本, ( x ˉ ) ( \bar{x} ) (xˉ)是样本均值, n n n是样本数量。

  • 特征值和特征向量公式:通过解特征方程 ( ∣ Σ − λ I ∣ = 0 ) ( |\Sigma - \lambda I| = 0 ) (∣ΣλI=0)得到特征值 ( λ ) ( \lambda ) (λ)和对应的特征向量 ( v ) ( v ) (v)

  • 主成分投影公式:对于第 j j j个主成分,其投影向量 ( p j ) ( p_j ) (pj)是对应的特征向量 ( v j ) ( v_j ) (vj),原始数据 ( x ) ( x ) (x)在该主成分上的投影为 ( z j = p j T x ) ( z_j = p_j^T x ) (zj=pjTx)

2.5 代码示例

# -*- coding:utf-8 -*-
# @Time   : 2024-03-13
# @Author : Carl_DJ

'''
实现功能:
   scikit-learn库实现PCA
      
'''
import numpy as np  
from sklearn.decomposition import PCA  
from sklearn.preprocessing import StandardScaler  
  
# 假设我们有一个二维数据集  
X = np.array([[1, 2], [3, 4], [5, 6], [7, 8]])  
  
# 数据标准化  
scaler = StandardScaler()  
X_scaled = scaler.fit_transform(X)  
  
# 创建PCA对象,设置主成分数量为1  
pca = PCA(n_components=1)  
  
# 拟合并转换数据  
X_pca = pca.fit_transform(X_scaled)  
  
# 输出降维后的数据  
print("Original shape:   ", X.shape)  
print("Transformed shape:", X_pca.shape)  
  
# 输出解释方差比,即每个主成分所占的方差比例  
print("Explained variance ratio:", pca.explained_variance_ratio_)


运行结果

Original shape:    (4, 2)  
Transformed shape: (4, 1)  
Explained variance ratio: [0.99999999]

在这里插入图片描述

3、总结

主成分分析(PCA)是一种强大的无监督学习算法,它通过正交变换将数据从原始的高维空间转换到低维空间,同时尽可能保留数据中的主要变异信息。

PCA在数据预处理、特征提取和降维等方面有着广泛的应用,能够简化数据的复杂性,提高机器学习算法的性能。

我是小鱼

  • CSDN 博客专家
  • 阿里云 专家博主
  • 51CTO博客专家
  • 企业认证金牌面试官
  • 多个名企认证&特邀讲师等
  • 名企签约职场面试培训、职场规划师
  • 多个国内主流技术社区的认证专家博主
  • 多款主流产品(阿里云等)测评一、二等奖获得者

关注小鱼,学习机器学习领域的知识。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【附订阅OnlyFans攻略】2024年AI:一个交织着创新与挑战的故事

2024年AI:一个交织着创新与挑战的故事 在2024年的一个清晨,阳光透过智能窗户的调节,柔和地洒在书房里。李华,一位年轻的科技创业者,坐在书桌前,凝视着电脑屏幕上不断跳动的数据和图像。他正在进行一项重要…

Flutter 项目架构技术指南

Flutter 项目架构技术指南 视频 https://www.bilibili.com/video/BV1rx4y127kN/ 前言 原文 https://ducafecat.com/blog/flutter-clean-architecture-guide 探讨Flutter项目代码组织架构的关键方面和建议。了解设计原则SOLID、Clean Architecture,以及架构模式MVC…

qt 实现 轮播图效果,且还有 手动 上一页和下一页 已解决

QT中有 轮播图的需求,按照正常html版本 。只需要配置数组就能搞定,但是c qt版本 应该用什么了。 第一想到的是采用定时器。 // 定时器初始化{m_pTime new QTimer(this);m_pTime->start(4 * 1000);//启动定时器并设置播放时间间隔m_pAutoFlag true;/…

网络层(IP层)

IP协议的本质:有将数据跨网络传输的能力 而用户需要的是将数据从主机A到主机B可靠地跨网络传输 IP的组成:目标网络目标主机 IP由目标网络和目标主机两部分组成,IP报文要进行传输,要先到达目标网络,然后经过路由器转到…

使用阿里云服务器搭建网站教程,超简单10分钟网站上线

使用阿里云服务器快速搭建网站教程,先为云服务器安装宝塔面板,然后在宝塔面板上新建站点,阿里云服务器网aliyunfuwuqi.com以搭建WordPress网站博客为例,来详细说下从阿里云服务器CPU内存配置选择、Web环境、域名解析到网站上线全流…

【算法设计与分析】实现Trie前缀树

📝个人主页:五敷有你 🔥系列专栏:算法分析与设计 ⛺️稳中求进,晒太阳 题目 Trie(发音类似 "try")或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串…

【评分标准】【网络系统管理】2019年全国职业技能大赛高职组计算机网络应用赛项H卷 无线网络勘测设计

第一部分:无线网络勘测设计评分标准 序号评分项评分细项评分点说明评分方式分值1点位设计图AP编号AP编号符合“AP型号位置编号”完全匹配5AP型号独立办公室、小型会议室选用WALL AP110完全匹配5员工寝室选用智分,其他用放装完全匹配5其它区域选用放装AP…

睿考网:二建可以跨省考试吗?

二级建造师资格考试允许考生进行跨省报名,但是考试通过后的注册环节,必须在考试所在的省份完成。建议在初始注册过程中选择与报名信息相符的单位,以确保符合当地的职业要求规定。 关于二建的考试地点,考生可以选择在工作单位所在…

鸿蒙Harmony应用开发—ArkTS-@Observed装饰器和@ObjectLink装饰器:嵌套类对象属性变化

上文所述的装饰器仅能观察到第一层的变化,但是在实际应用开发中,应用会根据开发需要,封装自己的数据模型。对于多层嵌套的情况,比如二维数组,或者数组项class,或者class的属性是class,他们的第二…

sr501人体红外传感器

sr501人体红外传感器 文章目录 sr501人体红外传感器1.介绍2.使用方法3.示例代码 持续更新中1.介绍 模块信息介绍来自百问网,仅供学习和参考​ 人体都有恒定的体温,一般在 37 度,所以会发出特定波长 10uM 左右的红外线,被动式红外…

推荐一款制造执行系统(MES)国内比较好的实施厂家

什么是MES 制造执行系统(MES)是一种用于监控、控制和优化制造过程的软件系统。它通过与企业资源计划(ERP)系统和自动化系统的集成,实现对生产过程的管理和监测,包括生产计划、生产过程和生产数据。 MES可…

基于python+vue分类信息服务平台移动端的设计与实现flask-django-php-nodejs

分类信息服务平台是在Android操作系统下的应用平台。为防止出现兼容性及稳定性问题,框架选择的是django,Android与后台服务端之间的数据存储主要通过MySQL。用户在使用应用时产生的数据通过 python等语言传递给数据库。通过此方式促进分类信息服务平台信…

高等数学基础篇(数二)之微分方程

微分方程: 一、常微分方程的基本概念 二、一阶微分方程 三、可降阶的高阶方程 四、高阶线性微分方程 目录 一、常微分方程的基本概念 二、一阶微分方程 三、可降阶的高阶方程 四、高阶线性微分方程 一、常微分方程的基本概念 二、一阶微分方程 帮助理解&…

C++学习之旅(二)运行四个小项目 (Ubuntu使用Vscode)

如果是c语言学的比较好的同学 可以直接跟着代码敲一遍&#xff0c;代码附有详细语法介绍&#xff0c;不可错过 一&#xff0c;猜数字游戏 #include <iostream> #include <cstdlib> #include <ctime>int main() {srand(static_cast<unsigned int>(tim…

SpringBoot整合Swagger-UI实现在线API文档

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉🍎个人主页:Leo的博客 💞当前专栏: 循序渐进学SpringBoot ✨特色专栏: MySQL学习 🥭本文内容:SpringBoot整合Swagger-UI实现在线API文档 📚个人知识库: Leo知识库,欢迎大…

在 vite 开发环境,使用https自签证书 --- mkcert

在 vite 开发环境&#xff0c;使用https自签证书 — mkcert 使用basicSsl&#xff08;vitejs/plugin-basic-ssl&#xff09; 在vite开发环境中&#xff0c;使用 basicSsl 插件能暂时提供https服务&#xff0c;同时&#xff0c;也会面临总是提示一下的问题,如下图 提示https证…

108、3D Gaussian Splatting for Real-Time Radiance Field Rendering

简介 官网 更少训练时间的同时实现最先进的视觉质量&#xff0c;能在1080p分辨率下实现高质量的实时(≥30 fps)新视图合成 NeRF使用隐式场景表示&#xff0c;体素&#xff0c;点云等属于显示建模方法&#xff0c;3DGS就是显示辐射场。它用3D高斯作为灵活高效的表示方法&…

R-CNN笔记

目标检测之R-CNN论文精讲&#xff0c;RCNN_哔哩哔哩_bilibili 论文背景 在该论文提出之前&#xff0c;主流的目标检测思路是&#xff1a; 将一幅图片划分成很多个区域&#xff0c;单独提取出来 对于每个区域使用传统的特征提取方法提取 提取结束后可以使用以为特征向量表示 可以…

Python+django+vue开发的家教信息管理系统

一直想做一款管理系统&#xff0c;看了很多优秀的开源项目但是发现没有合适的。 于是利用空闲休息时间开始自己写了一套管理系统。 功能介绍 平台采用B/S结构&#xff0c;后端采用主流的Pythondjango进行开发&#xff0c;前端采用主流的Vue.js进行开发。 整个平台包括前台和…

外推蜘蛛池的优势及优势?

源码介绍&#xff1a; 适用使用范围: 外推蜘蛛池、站群 演示地址&#xff1a;以截图为准 运行环境&#xff1a;php 其余注释&#xff1a;什么是蜘蛛池&#xff1f; 蜘蛛池是一个利用大平台权重来获取百度收录和排名的程序。 程序员通常称其为“蜘蛛池”。 这是一个可以快速…