[机器学习算法] 主成分分析

主成分分析(Principal Component Analysis, PCA)是一种用于降维和特征提取的统计方法。它可以将高维数据投影到较低维度的空间中,同时尽量保留数据的变异性。以下是详细的学习步骤,包括理论和实际操作。

一、了解PCA的基本概念

  1. 数据变换与降维

    • PCA的目标是将原始数据转换为线性不相关的新变量(主成分),并按方差大小排序。
    • 第一个主成分是方向上最大方差的方向,第二个主成分是与第一个正交且方差次大的方向,以此类推。
  2. 协方差矩阵

    • 计算数据集的协方差矩阵,用于衡量变量之间的关系。
  3. 特征值和特征向量

    • 计算协方差矩阵的特征值和特征向量。特征向量表示主成分的方向,特征值表示这些方向上的方差。

二、理论知识学习

  1. 中心化数据

    • PCA首先对数据进行中心化处理,即减去每个特征的均值,使得每个特征的均值为零。
    import numpy as npX = np.array([[2.5, 2.4],[0.5, 0.7],[2.2, 2.9],[1.9, 2.2],[3.1, 3.0],[2.3, 2.7],[2.0, 1.6],[1.0, 1.1],[1.5, 1.6],[1.1, 0.9]])mean_X = np.mean(X, axis=0)
    X_centered = X - mean_X
    
  2. 计算协方差矩阵

    covariance_matrix = np.cov(X_centered, rowvar=False)
    
  3. 计算特征值和特征向量

    eigenvalues, eigenvectors = np.linalg.eig(covariance_matrix)
    
  4. 选择主成分

    • 根据特征值的大小排序,选择前k个特征向量组成新的特征空间。
    # 排序特征值和特征向量
    idx = np.argsort(eigenvalues)[::-1]
    eigenvalues = eigenvalues[idx]
    eigenvectors = eigenvectors[:, idx]# 选择前k个主成分
    k = 2
    selected_eigenvectors = eigenvectors[:, :k]
    
  5. 转换数据到新空间

    X_pca = np.dot(X_centered, selected_eigenvectors)
    

三、实践操作

  1. 使用Python实现PCA

    import matplotlib.pyplot as pltdef plot_pca(X, X_pca):plt.figure(figsize=(8, 4))plt.subplot(1, 2, 1)plt.scatter(X[:, 0], X[:, 1], color='blue')plt.title("Original Data")plt.subplot(1, 2, 2)plt.scatter(X_pca[:, 0], X_pca[:, 1], color='red')plt.title("PCA Transformed Data")plt.show()plot_pca(X, X_pca)
    
  2. 使用库函数进行PCA

    from sklearn.decomposition import PCApca = PCA(n_components=2)
    X_pca_sklearn = pca.fit_transform(X)plot_pca(X, X_pca_sklearn)
    

四、理解PCA结果

  • 解释主成分:每个主成分是原始特征的线性组合,可以通过查看特征向量的系数理解主成分。
  • 解释方差:特征值的大小表示在相应主成分上的方差,解释力越高的主成分方差越大。

五、应用场景

主成分分析(PCA)作为一种数据降维和特征提取技术,在各种领域都有广泛的应用。以下是一些常见的应用场景:

  1. 数据预处理
    在数据分析和机器学习中,PCA可以用于数据预处理,以减少数据的维度,消除噪声,提高模型的训练效率和性能。

  2. 图像处理
    PCA在图像处理中的应用主要包括图像压缩和图像去噪。通过PCA,可以将高维的图像数据转换为低维数据,同时保留图像的主要特征。

  • 图像压缩:通过保留前几个主成分,可以显著减少图像的存储空间。
  • 图像去噪:去除图像中较小的主成分,保留主要的结构信息。
  1. 数据可视化
    对于高维数据,PCA可以将其降维至2D或3D,从而便于可视化和理解数据的分布。

  2. 股票市场分析
    在金融领域,PCA可以用于分析股票数据,识别主要的风险因子和市场趋势,帮助投资者进行决策。

  3. 基因表达数据分析
    在生物信息学中,PCA用于分析基因表达数据,识别影响基因表达的主要因素,帮助科学家理解基因功能和疾病机制。

  4. 文本数据处理
    在自然语言处理(NLP)领域,PCA用于文本特征提取和降维,帮助提高文本分类和聚类的效果。

  5. 客户细分
    在市场营销中,通过PCA对客户数据进行降维和聚类分析,可以帮助企业识别不同的客户群体,制定针对性的营销策略。

  6. 传感器数据分析
    在物联网和传感器网络中,PCA用于处理多维传感器数据,提取主要特征,进行故障检测和状态监控。

使用tensorflow对手写数字图像数据集(MNIST)进行PCA降维和重构操作

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

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

相关文章

看广告收益小游戏app平台搭建

搭建一个看广告收益小游戏APP平台是一个复杂且涉及多个方面的过程。以下是一个大致的搭建流程: 市场调研与定位: 首先,进行市场调研,了解目标用户群体的需求和偏好,以及现有市场的竞争情况123。根据调研结果&#xff0…

ReF:斯坦福提出的新型语言模型微调方法

随着预训练语言模型(LMs)在各种自然语言处理(NLP)任务中的广泛应用,模型微调成为了一个重要的研究方向。传统的全参数微调方法虽然有效,但计算成本高昂,尤其是在大型模型上。为了解决这一问题&a…

解读代理 IP差异:ISP 代理与住宅代理

独立IP作为跨境必备工具,代理类型五花八门,今天IPFoxy全球代理将为搭建科普:ISP代理与住宅代理在理论上与使用上的区别。代理充当用户和互联网之间的中介,提供各种功能以增强安全性、隐私性和可访问性。在众多代理类型中&#xff…

嵌入式实验---实验四 DMA传输实验

一、实验目的 1、掌握STM32F103DMA传输程序设计流程; 2、熟悉STM32固件库的基本使用。 二、实验原理 1、利用外部按键KEY1来控制DMA的传送,每按一次KEY1,DMA就传送一次数据到USART1(串口1); 2、该串口…

【深度学习驱动流体力学】采集OpenFOAM仿真的流体力学数据送入到LSTM模型训练

具体参考上一篇文章: 【深度学习驱动流体力学】采集OpenFOAM仿真数据作为AI模型训练数据集与卷积神经网络搭建到预测(一站式完整代码实现) 原理介绍 数据处理与预处理 该代码首先导入必要的库,包括用于读取和处理VTK文件的pyvista,用于数值计算的numpy,用于路径操作的os,…

win10 安装PowerShell

总结: 直接下一步,下一步… 下载链接 https://download.csdn.net/download/qq_43071699/89462517

Qt扩展-轻量数学公式计算

轻量数学公式计算 一、概述二、代码结构三、简单使用四、解析支持1. 操作数2. 运算符3. 括号 一、概述 这个是我写得简单的一个数学计算公式工具。easy-math-parser 是一个用C编写的简单工具包,支持四个操作字符串的计算工具,灵感来自Muparser。 在这个…

Linux守护进程简介、创建流程、关闭和实例演示

1、什么是守护进程? 守护进程是一个后台运行的进程,是随着系统的启动而启动,随着系统的终止而终止,类似于windows上的各种服务,比如ubuntu上的ssh服务,网络管理服务等都是守护进程。 2、守护进程的创建流…

关于创建String的那点事...

String 首先说明一下,本人是前端小学生级别的菜鸡,吐槽的话请口下留情,在评论区指出错误或者补充不足,我会很喜欢,互喷不会进步,相互指点才会。。。。谢谢大家啦 目录 字面量方式构造函数方式区别 等号判…

如何为自己的项目生成changelog

背景 在github上看到人家的更新日志感觉很cool,怎么能给自己项目来一套呢 环境信息 tdstdsdeMacBook-Pro demo-doc % node -v v14.18.1 tdstdsdeMacBook-Pro demo-doc % npm -v 6.14.15硬件信息 型号名称:MacBook Pro版本: 12.6.9芯片&…

活出属于自己的人生

背景 24年高考帷幕落下,一场新的思考与选择悄然来临。对于每一位高考考生,学校和专业都是开启大学新生活的两个前置必选项。但有时候“鱼与熊掌不可兼得”,在分数受限的条件下,是选择一个心仪的专业还是选择一个知名度更高的学校…

QT自定义标题栏窗口其二:实现拖动及可拉伸效果 + 顶部全屏/侧边半屏

1、效果 2、核心代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent<

yolov10训练自己的数据集(没有显卡的替代方案)

1.没有显卡的替代方案 robflow https://github.com/tensorflow/models/tree/master/official 模型训练替代方案&#xff1a;嘉楠开发者社区

基于鲸鱼优化的DSN弱栅栏覆盖算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 for t1:Itersfor i1:Num%目标函数更新[pa(i),fgai] fitness(xwoa(…

全网最全!25届最近5年上海大学自动化考研院校分析

上海大学 目录 一、学校学院专业简介 二、考试科目指定教材 三、近5年考研分数情况 四、近5年招生录取情况 五、最新一年分数段图表 六、历年真题PDF 七、初试大纲复试大纲 八、学费&奖学金&就业方向 一、学校学院专业简介 二、考试科目指定教材 1、考试科目…

Linux计划任务与日志

计划任务 主要用于完成一些周期性任务及定时任务&#xff0c;Windows中也有该功能&#xff1a; 单次调度执行 yum install -y at安装at工具&#xff0c;systemctl start atd启动服务&#xff0c;使用方法为at 选项 时间 执行内容时间可以自由设置&#xff0c;开启的栏目中输…

【SpringBoot + Vue 尚庭公寓实战】地区信息管理接口实现(九)

【SpringBoot Vue 尚庭公寓实战】地区信息管理接口实现&#xff08;九&#xff09; 文章目录 【SpringBoot Vue 尚庭公寓实战】地区信息管理接口实现&#xff08;九&#xff09;1、业务说明2、数据逻辑模型3、接口实现3.1、查询省份信息列表3.2、根据省份ID查询城市信息列表3…

AGI|以ChatGPT为例,浅析AI究竟能干什么?

目录 一、前言 二、ChatGPT 三、Prompt Engineering 四、神经网络 五、后记 一、前言 当一个新事物的出现&#xff0c;最好的办法就是了解它出现的背景&#xff0c;发展的历史。 当ChatGPT出现在我们面前&#xff0c;多轮对话能力让人震惊&#xff0c;仿佛机器真的可以&qu…

前端科举八股文-REACT篇

前端科举八股文-REACT篇 vue和react有和异同&#xff1f;useEffect中为什么不能使用异步函数&#xff1f;useEffect和useLayoutEffect的区别react的生命周期&#xff1f;state和props的区别&#xff1f; 讲讲你的理解&#xff1f;受控组件和非受控组件的区别讲一下你理解的reac…

vue动态绑定class的几种方式

第一种 基础用法 / <template><div :class"active"></div> </template><script setup> import { ref } from "vue"; const active ref(true); </script><style></style>第二种&#xff1a;三元运算法 …