返回顶部
首页 > 资讯 > 后端开发 > Python >(手写)PCA原理及其Python实现图文详解
  • 586
分享到

(手写)PCA原理及其Python实现图文详解

PythonPCA原理 2022-06-02 22:06:41 586人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录1、背景2、样本均值和样本方差矩阵3、PCA3.1 最大投影方差3.2 最小重构距离4、python实现总结1、背景 为什么需要降维呢? 因为数据个数 N 和每个数据的维度 p 不满足 N >> p

目录
  • 1、背景
  • 2、样本均值和样本方差矩阵
  • 3、PCA
    • 3.1 最大投影方差
    • 3.2 最小重构距离
  • 4、python实现
    • 总结

      1、背景

      为什么需要降维呢?

      因为数据个数 N 和每个数据的维度 p 不满足 N >> p,造成了模型结果的“过拟合”。有两种方法解决上述问题:

      增加N;减小p。

      这里我们讲解的 PCA 属于方法2。

      2、样本均值和样本方差矩阵

      在这里插入图片描述

      在这里插入图片描述

      3、PCA

      在这里插入图片描述
      在这里插入图片描述

      3.1 最大投影方差

      在这里插入图片描述

      3.2 最小重构距离

      在这里插入图片描述

      4、Python实现

      
      """
          -*- coding: utf-8 -*-
          @ Time     : 2021/8/15  22:19
          @ Author   : Raymond
          @ Email    : wanght2316@163.com
          @ Editor   : PyCharm
      """
      from sklearn.datasets import load_digits
      from sklearn.decomposition import PCA
      import pandas as pd
      import matplotlib.pyplot as plt
      
      digits = load_digits()
      print(digits.keys())
      print("数据的形状为: {}".fORMat(digits['data'].shape))
      # 构建模型 - 降到10 d
      pca = PCA(n_components=10)
      pca.fit(digits.data)
      projected=pca.fit_transform(digits.data)
      print('降维后主成分的方差值为:',pca.explained_variance_)
      print('降维后主成分的方差值占总方差的比例为:',pca.explained_variance_ratio_)
      print('降维后最大方差的成分为:',pca.components_)
      print('降维后主成分的个数为:',pca.n_components_)
      print('original shape:',digits.data.shape)
      print('transformed shape:',projected.shape)
      s = pca.explained_variance_
      c_s = pd.DataFrame({'b': s,'b_sum': s.cumsum() / s.sum()})
      c_s['b_sum'].plot(style= '--ko',figsize= (10, 4))
      plt.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体
      plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
      plt.axhline(0.85,  color= 'r',linestyle= '--')
      plt.text(6, c_s['b_sum'].iloc[6]-0.08, '第7个成分累计贡献率超过85%', color='b')
      plt.title('PCA 各成分累计占比')
      plt.grid()
      plt.savefig('./PCA.jpg')
      plt.show()
      

      结果展示:

      在这里插入图片描述

      总结

      本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注编程网的更多内容!

      --结束END--

      本文标题: (手写)PCA原理及其Python实现图文详解

      本文链接: https://lsjlt.com/news/11223.html(转载时请注明来源链接)

      有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

      猜你喜欢
      • (手写)PCA原理及其Python实现图文详解
        目录1、背景2、样本均值和样本方差矩阵3、PCA3.1 最大投影方差3.2 最小重构距离4、Python实现总结1、背景 为什么需要降维呢? 因为数据个数 N 和每个数据的维度 p 不满足 N >> p...
        99+
        2022-06-02
        Python PCA原理
      • 主成分分析(PCA)及python原理实现
        PCA定义: 该定义来自于秒懂百科:          PCA(principal components analysis)即主成分分析技术,又称主分量分析,旨在利用降维的思想,把多指标转化为少数几个综合指标。         在统计学中,...
        99+
        2023-10-24
        人工智能 机器学习
      • 图文详解感知机算法原理及Python实现
        目录写在前面1.什么是线性模型2.感知机概述3.手推感知机原理4.Python实现4.1 创建感知机类4.2 更新权重与偏置4.3 判断误分类点4.4 训练感知机4.5 动图可视化5...
        99+
        2024-04-02
      • JDK动态代理过程原理及手写实现详解
        目录JDK动态代理的过程手写实现JDK动态代理创建MyInvocationHandler接口创建MyClassLoader类加载器创建代理类使用自定义动态代理类创建接口创建被代理接口...
        99+
        2024-04-02
      • 图文详解牛顿迭代算法原理及Python实现
        目录1.引例2.牛顿迭代算法求根3.牛顿迭代优化4 代码实战:Logistic回归1.引例 给定如图所示的某个函数,如何计算函数零点x0 在数学上我们如何处理这个问题? 最简单的办...
        99+
        2024-04-02
      • 详解Dijkstra算法原理及其C++实现
        目录什么是最短路径问题Dijkstra算法实现思路案例分析代码实现什么是最短路径问题 如果从图中某一顶点(称为源点)到达另一顶点(称为终点)的路径可能不止一条,如何找到一条路径使得沿...
        99+
        2024-04-02
      • 图文详解梯度下降算法的原理及Python实现
        目录1.引例2.数值解法3.梯度下降算法4.代码实战:Logistic回归1.引例 给定如图所示的某个函数,如何通过计算机算法编程求f(x)min? 2.数值解法 传统方法是数值解...
        99+
        2024-04-02
      • 图片隐写之LSB(Least Significant Bit)原理及其代码实现
        1. 什么是隐写? 隐写术是一门关于信息隐藏的技巧与科学,所谓信息隐藏指的是不让除预期的接收者之外的任何人知晓信息的传递事件或者信息的内容。隐写术的英文叫做Steganography,来源于特里特米乌...
        99+
        2023-09-15
        python 人工智能 深度学习 图片隐写术
      • CRC校验原理及其C语言实现详解
        目录前言CRC算法简介CRC参数模型CRC计算CRC校验CRC计算的C语言实现CRC计算工具总结前言 最近的工作中,要实现对通信数据的CRC计算,所以花了两天的时间好好研究了一下,周...
        99+
        2023-03-10
        C语言 CRC校验 C语言 CRC原理 C语言 CRC
      • SPFA算法的实现原理及其应用详解
        目录一、前言二、SPFA 算法1、SPFA算法的基本流程2、代码详解三、SPFA 算法已死一、前言 SPFA算法,全称为Shortest Path Faster Algorithm,...
        99+
        2023-05-20
        SPFA算法原理 SPFA算法应用 SPFA算法
      • 一文详解凯撒密码的原理及Python实现
        目录一、什么是恺撒密码二、程序运行环境三、恺撒密码:加密3.1 恺撒密码加密实例程序3.2 恺撒密码加密实例程序运行结果四、恺撒密码:解密4.1 恺撒密码解密实例程序4.2 恺撒密码...
        99+
        2024-04-02
      • C++和python实现单链表及其原理
        目录一、链表的基本概念二、单链表1.python实现(1)节点设计(2)链表类:Single_Linked_List(3)判断链表是否为空:is_empty()函数(4)头插法:ad...
        99+
        2024-04-02
      • 详解Bagging算法的原理及Python实现
        目录一、什么是集成学习二、Bagging算法三、Bagging用于分类四、Bagging用于回归一、什么是集成学习 集成学习是一种技术框架,它本身不是一个单独的机器学习算法,而是通过构建并结合多个机器学习器来完成学习...
        99+
        2022-06-02
        Python Bagging算法 python 装袋算法
      • python实现高斯模糊及原理详解
        高斯模糊是一种常见的模糊技术,相关知识点有:高斯函数、二维卷积。  (一)一维高斯分布函数 一维(连续变量)高斯函数形式如下,高斯函数又称“正态分布函数”: μ是分布函数的均值(或者期望),sigma是...
        99+
        2022-06-02
        python 高斯模糊
      • Android图片三级缓存的原理及其实现
        为什么要使用三级缓存 如今的 Android App 经常会需要网络交互,通过网络获取图片是再正常不过的事了 假如每次启动的时候都从网络拉取图片的话,势必会消耗很多流量。在当前的状况下,对于非wifi用户来说,流量还是很贵的,一个很耗流...
        99+
        2023-05-30
        android 图片 三级缓存
      • ARIMA(p,d,q)模型原理及其实现 --------python
         1.简介 ARIMA模型(Autoregressive Integrated Moving Average model),差分整合移动平均自回归模型,又称整合移动平均自回归模型,时间序列预测分析方法之一。ARIMA(p,d,q)中,AR是...
        99+
        2023-09-11
        python 机器学习
      • 详解B+树的原理及实现Python代码
        B+树是自平衡树的高级形式,其中所有值都存在于叶级中。B+树所有叶子都处于同一水平,每个节点的子节点数量≥2。B+树与B树的区别是各节点在B树上不是相互连接,而在B+树上是相互连接的。 B+树多级索引结构图 B+树搜索规则 1、从...
        99+
        2024-01-24
        B树的概念
      • Python文件索引的实现原理及其在文件加载中的应用。
        Python文件索引的实现原理及其在文件加载中的应用 在Python中,文件是一种常见的数据类型,因此在应用程序中经常需要读写文件。当文件数量很大时,我们需要使用一种快速的方式来查找和访问文件。这时,文件索引就发挥了重要作用。本文将介绍Py...
        99+
        2023-09-28
        文件 索引 load
      • HashMap原理及手写实现部分区块链特征
        目录写在前面JDK7和JDK8中的HashMap正文写在前面 最近有很多的粉丝私信我,说自己在面试的时候,老是被人问HashMap的原理,但是在实际的工作中,也只是使用HashMap...
        99+
        2024-04-02
      • 详解C++ OpenCV实现图像拼接的原理及方法
        目录前言一、图像拼接相关原理 图像特征采集特征提取算法透视变换透视矩阵图像拷贝二、案例实现Step1:导入目标图片Step2:特征点提取和匹配 Step3:图像配...
        99+
        2024-04-02
      软考高级职称资格查询
      编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
      • 官方手机版

      • 微信公众号

      • 商务合作