PCA(主成分分析)降维原理及其在optdigits以及点云数据集上的python实现

三维点云处理-1.2主成分分析PCA 一、 主成分(PCA)概念:将数据点投影到有特征性的方向上,每个数据点在向量上的投影就是主成分。 主成分用途:降维、法向量的估计、分类 二、 PCA的数学概念和物理意义 Rayleigh quotients 瑞利熵 SVD 主成分输入:一堆高维的点 主成分输出:最主要的向量 ①方差找最大的Z1②去掉Z1,然后找剩下的主成分③过程可以重复很多遍找到我们想要的主向量 PCA步骤总结:有一对点 ①减掉数据点的均值 ②... 阅读详情

PCA(Principal Components Analysis)原理

*假设我们有m个samples,每个samples有n维特征
*那么可以构造输入矩阵 X,m行n列
*PCA降维的目标就是将原来每个用n维表示的sample用k维表示,k<n
*数学上的推导由于我原来的笔记找不到了这里就先不展开,以后有了自己新的理解再补充
*推荐入门资料:南大周志华西瓜书上对PCA的讲解,书中三页讲清楚了大部分的思想
除此之外,关于PCA的最大方差解释推荐阅读这篇文章主成分分析(Principal components analysis)-最大方差解释

PCA实现步骤

  1. 计算协方差矩阵covX = X.T.dot(X), the shape of covX is (n,n)
  2. 对covX进行特征分解,得到特征值eigenValue和特征向量eigenVector。where the shape of eigenVector is n by feature n
  3. 对eigenValue降序排序,取前k个特征值,并且将他们对应的特征向量从eigenVector中抽取出来,得到selectVec, 大小为n by feature k
  4. 降维后的数据矩阵为X_lowdimension=X.dot(selectVec), 大小为m by feature k
    如果k比较低的情况下(k=2或者k=3),可以将这些数据plot出来看看PCA降维到底发生了什么
    5.用降维后的数据矩阵重构X, X_reconstruct=X_lowdimension.dot(selectVec.T), 大小为(m,n)

PCA核心算法python实现

'''
#meanX(dataX)
#Function: for calculating the mean of input dataX
#input parameter:numpy form "dataX", whose row indicate sample,coloum indicate character
'''
def meanX(dataX):
    return np.mean(dataX,axis=0)#axis=0 indicate calculating mean by coloum



'''
#PCA(XMat, k)
#Function: calculate input Matrix XMat's PCA result using the first k dimension character
#input parameter:
    - XMat: numpy form "XMat", whose row indicate sample,coloum indicate character
    - k: means only reserve the first k egienvalue's egienvector
#return:
    - X_afterPCA: the low dimensional matrix respect to parameter k
    - recon_XMat: reconstruct data, the matrix after shifting the coordinate
'''
def PCA(XMat, k):
    average = meanX(XMat)#calculate the mean of XMat by coloum,the shape of average is (1,n)
    m, n = np.shape(XMat)
    XMat_Centralization = []
    avgs = np.tile(average, (m, 1))#copy m average by row,the shape of avgs is(m,n)
    XMat_Centralization = XMat - avgs#data preprocessing :rawData minus every character's mean, the shape of XMat_Centralization is (m,n)
    #covX = np.cov(XMat_Centralization.T)   #Calculating the covariance matrix,the shape of covX is (n,n)
    covX = XMat_Centralization.T.dot(XMat_Centralization)#,if x's shape is (m,n),covx=X.T*X
    eigenVal, eigenVec = np.linalg.eig(covX)  #calculating eigenvalue and egienvector of covariance matrix covX,eigenvalue's shape is (n,1),eigenVec's shape is (n,n)
    index_EigenVal = np.argsort(-eigenVal) #sort eigenVal by descending order
    
    X_afterPCA = []
    if k > n:
        print ("k must lower than feature number")
        return
    else:
        #eigenVec is a coloum vector which means the eigenVec indicates (n by feature n)
        selectVec = np.matrix(eigenVec.T[index_EigenVal[:k]]) #eigenVec.T indicates (feature n by n),slect the first k feature to construct selectVec whose shape is(k,n)
        X_afterPCA = XMat_Centralization * selectVec.T #preforming PCA on XMat_Centralization,we can get X_afterPCA whose shape is (m,k),n features is transformed to k features in each sample
        recon_XMat = (X_afterPCA * selectVec) + average #reconstruct the XMat by  X_afterPCA, recon_XMat's shape is (m,n)
    return X_afterPCA, recon_XMat

optdigits数据集介绍

下载地址:http://archive.ics.uci.edu/ml/datasets/Optical+Recognition+of+Handwritten+Digits

  1. Title of Database: Optical Recognition of Handwritten Digits

  2. Source:
    E. Alpaydin, C. Kaynak
    Department of Computer Engineering
    Bogazici University, 80815 Istanbul Turkey
    alpaydin@boun.edu.tr
    July 1998

  3. Past Usage:
    C. Kaynak (1995) Methods of Combining Multiple Classifiers and Their
    Applications to Handwritten Digit Recognition,
    MSc Thesis, Institute of Graduate Studies in Science and
    Engineering, Bogazici University.

    E. Alpaydin, C. Kaynak (1998) Cascading Classifiers, Kybernetika,
    to appear. ftp://ftp.icsi.berkeley.edu/pub/ai/ethem/kyb.ps.Z

  4. Relevant Information:
    We used preprocessing programs made available by NIST to extract
    normalized bitmaps of handwritten digits from a preprinted form. From
    a total of 43 people, 30 contributed to the training set and different
    13 to the test set. 32x32 bitmaps are divided into nonoverlapping
    blocks of 4x4 and the number of on pixels are counted in each block.
    This generates an input matrix of 8x8 where each element is an
    integer in the range 0…16. This reduces dimensionality and gives
    invariance to small distortions.

    For info on NIST preprocessing routines, see
    M. D. Garris, J. L. Blue, G. T. Candela, D. L. Dimmick, J. Geist,
    P. J. Grother, S. A. Janet, and C. L. Wilson, NIST Form-Based
    Handprint Recognition System, NISTIR 5469, 1994.

  5. Number of Instances
    optdigits.tra Training 3823
    optdigits.tes Testing 1797

    The way we used the dataset was to use half of training for
    actual training, one-fourth for validation and one-fourth
    for writer-dependent testing. The test set was used for
    writer-independent testing and is the actual quality measure.

  6. Number of Attributes
    64 input+1 class attribute

  7. For Each Attribute:
    All input attributes are integers in the range 0…16.
    The last attribute is the class code 0…9

  8. Missing Attribute Values
    None

  9. Class Distribution
    Class: No of examples in training set
    0: 376
    1: 389
    2: 380
    3: 389
    4: 387
    5: 376
    6: 377
    7: 387
    8: 380
    9: 382

    Class: No of examples in testing set
    0: 178
    1: 182
    2: 177
    3: 183
    4: 181
    5: 182
    6: 181
    7: 179
    8: 174
    9: 180

Accuracy on the testing set with k-nn
using Euclidean distance as the metric

k = 1 : 98.00
k = 2 : 97.38
k = 3 : 97.83
k = 4 : 97.61
k = 5 : 97.89
k = 6 : 97.77
k = 7 : 97.66
k = 8 : 97.66
k = 9 : 97.72
k = 10 : 97.55
k = 11 : 97.89

case1:用PCA对optdigits.tra数据集降维

(1)从optdigits.tra抽取出所有的数字为’3‘的行
(2)对其作用PCA,将这些数据降维到2D
(3)在平面上画出这些二维散点
(4)以栅格的形式在二维散点平面上查找离标准栅格点最近的5×5共25个点
(5)将这些点对应的原数据以灰度图的形式画出来
(6)比较这25个’3‘表现出来的规律
在这里插入图片描述
在这里插入图片描述

case2:用PCA对点云数据降维

在3D视觉中,点云是指由大量空间3D点组成的数据集:每一个点由x,y,z三个坐标组成。
结构光系统扫描出来的点云:
在这里插入图片描述
我们对上面这个鞋子的点云进行PCA处理,结果如下:
在这里插入图片描述

【三维点云处理】PCA主成分析+实践(一) @[TOC]三维点云处理:PCA主成分析+实践 #PCA简介 #python代码 #实验结果 PCA简介 PCA(Principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据降维算法。PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。 详情查看这两篇稿子 一 二 python代码 import open3d as o3d import os import numpy as np impor 阅读详情

相关推荐

点云的基本特征和描述,PCA主成分分析

文章目录一、点云特征的基本要求二、点云特征的分类三、点云的基本特征描述四、PCA(Princile Components Analysis)主成分分析4.1 点云的PCA步骤打赏支付宝微信 一、点云特征的基本要求 http://www.pointclouds.org/documentation/tutorials/ 二、点云特征的分类 https://blog.csdn.net/shaozhenghan/article/details/81346585 三、点云的基本特征描述 二维情况 三维情况 四

一抹烟霞的博客 1万+

【点云处理】PCA

文章目录PCA主成分分析数学概念PCA降维过程Kernel PCA流程: PCA主成分分析 物理意义:把数据投影到比较有特征性的方向上 每个点在这个方向上的投影就是主成分 应用:数据降维(保持原始信息)分类(KPCA) 数学概念 向量内积:一个向量投影到另一个向量中 矩阵向量乘法:矩阵每一列的线性组合 PCA 输入:m个n维向量 输出:k(k<n)个principle vector: 输入的k维向量的一群点最有代表性(把这群点投影到这方向上投影的方向最大 分布较散)

KNIGHT_HOY的博客 2558

【Python机器学习及实践】基础篇:无监督学习经典模型(特征降维)

Python机器学习及实践——基础篇:无监督学习经典模型(特征降维) 特征降维不仅可以重构有效的低维度特征向量,同时也为数据展现提供了可能。在特征降维的方法种,主成分分析(Principal Component Analysis, PCA)是最为经典和实用的特征降维技术,特别是辅助图像识别方法有突出的表现。 1.主成分分析 线性相关矩阵秩计算样例 import numpy as np ...

小哲的博客 1078

【数据降维】主成分分析法(PCA法)

数据降维之PCA法

weixin_74042627的博客 308

MATLAB/simulink电力系统之变压器仿真+变压器饱和仿真+空载变压器电流畸变原因及仿真+空载合闸励磁涌流仿真+simulink免费仿真资源

单相变压器空载运行时,原边电流主要用来产生主磁场,而电路损耗和铁芯损耗很小,因此即使外加电压很大,空载电流仍然很小。如果想观察某个相对磁导率下电感系数的数值,可以在程序中增加这样的语句,比如,在程序中end语句之后,加上L(100),运行程序后就可以得到相对磁导率为 100时的电感系数值。在交流铁芯线圈中,当交变磁通按照正弦规律变化时,受到磁路饱和的影响,线圈中的电流会发生畸变,并成为尖顶波,这就是所谓的交流磁路电流畸变。需要指出,铁芯内的主磁通Ф可以通过空载时的副边电压从来测量,两者之间的数学关系,即。

m0_37724753的博客 4234

27-eMMC电路设计

eMMC硬件电路设计

weixin_66510961的博客 4009

python降维分析_机器学习之路:python 特征降维 主成分分析 PCA

1 from sklearn.svm importLinearSVC2 from sklearn.metrics importclassification_report3 from sklearn.decomposition importPCA4 importpandas as pd5 importnumpy as np6 ‘‘‘7 主成分分析:8 特征降低维度的方法。9 提取主要特征成分,有关联...

weixin_39880615的博客 134

【冷冻电镜】RELION5.0使用教程总结

对于您自己的数据,您可能希望使用各种倾斜系列对齐方法,然后比较每种方法生成的断层扫描图像的质量(参见下一步)。通过检查 CtfFind job 的 tilt_series 目录中的star文件来检查几个倾斜系列的散焦值。GitHub上也有人反应这个问题,目前我的解决方案是下载了较低版本的CTFFIND的,降级到4.1.10可以成功运行。此外,logfile.pdf 文件包含所有显微照片的有用参数图,例如散焦、像散、估计分辨率等,以及整个数据集中这些值的直方图。的目录,以及指向此目录的符号链接。

进阶中的程序员吃吃的博客 4244

《Python机器学习及实践》----无监督学习之特征降维

本片博客是根据《Python机器学习及实践》一书中的实例,所有代码均在本地编译通过。数据为从该书指定的百度网盘上下载的,或者是sklearn自带数据下载到本地使用的。 代码片段:# coding: utf-8 import numpy as np M = np.array([[1, 2], [2, 4]]) np.linalg.matrix_rank(M, tol=None)import pan

wangshuang1631的博客 3736

分组背包问题(MCKP)三大算法对比:贪心、Dyer-Zemel和动态规划谁更强?

本文深入对比了分组背包问题(MCKP)的三大主流算法:贪心算法、Dyer-Zemel算法和动态规划。通过分析各自的原理、实现及性能表现,揭示了贪心算法速度快但非最优,动态规划精确但受限于规模,而Dyer-Zemel算法则在效率与最优性间取得了最佳平衡,是解决中等至大规模MCKP问题的首选方案。

vscode6remote的博客 226

华为MetaERP国资委语境下的 DRP(全域数字化资源管理平台/Digitalized Resource-management Platform)与传统 ERP(以 SAP、Oracle 为代表)的

【摘要】国资委推动的DRP(全域数字化资源管理平台)正在重构央国企数智化转型路径,其本质是通过"ERP管交易+DRP管管控"的双层架构实现升维替代。与传统ERP相比,DRP具有三大突破:采用国产分布式数据库实现全级次穿透监管、构建数据中台打破信息孤岛、以实时分析替代事后报表。当前政策明确2026-2030年分阶段建设目标,这将重塑产业格局——倒逼传统ERP厂商转型,为云原生/AI/信创企业创造新机遇。需注意DRP并非简单替代ERP,而是通过治理模式变革实现"交易系统做薄、管控中

金牌架构师 288

PCA

import numpy as np import pandas as pd from sklearn.decomposition import PCA from matplotlib import pyplot as plt M=np.array([[1,2],[2,4]]) np.linalg.matrix_rank(M,tol=None) digits_train=pd.read_csv('h

zhouyelihua 1039

半导体器件仿真:双极型晶体管仿真_15.双极型晶体管的高级仿真技术

双极型晶体管(Bipolar Junction Transistor, BJT)是一种重要的半导体器件,广泛应用于放大、开关和调制等电路中。随着半导体技术的发展,对BJT的仿真要求也越来越高。本节将详细介绍双极型晶体管的高级仿真技术,包括器件模型的选择、仿真参数的优化、温度效应的考虑以及噪声分析等。

2401_87715305的博客 1244

python显示手写数字图片经pca压缩后的二维空间分布 程序错误分析

import pandas as pd import numpy as np digits_train = pd.read_csv('../Datasets/Breast-Cancer/optdigits.tra', header=None) digits_test = pd.read_csv('../Datasets/Breast-Cancer/optdigits.tes', h

tigerxuchuanli的专栏 981

自动驾驶大模型---小米&华科的ORION端到端方案

本文介绍了小米汽车与华中科技大学联合开发的ORION自动驾驶端到端方案。该框架创新性地将视觉语言模型(VLM)与自动驾驶系统结合,包含QT-Former特征提取模块、大语言模型(LLM)推理模块和生成式规划器三大核心组件。通过视觉感知与语言理解的深度融合,ORION能更准确地理解人类指令并生成合理轨迹,同时提升系统的可解释性。实验证明,该方案在准确性、泛化能力和决策透明度方面均有显著优势。ORION框架为自动驾驶技术提供了新思路,有望推动行业向更安全、智能的方向发展。

智能汽车人的博客 2005

第三篇:NVIDIA cuOpt Python API 详解:LP、QP、MILP 建模与求解,附核心术语名词解释

NVIDIA cuOpt是一款GPU加速的优化求解库,支持LP、QP、MILP和路径优化问题。本文详细介绍了其Python API使用方法,包括核心类Problem的变量定义、约束添加、目标设置和求解配置,并提供了术语解释。cuOpt通过GPU并行计算大幅提升大规模优化问题的求解效率,支持多种求解算法和参数配置,适用于需要高性能计算的优化场景。安装方式包含pip和Docker两种,验证安装后即可快速开始建模求解。

算法工程师 236

UCI Optdigits数据的转化

UCI数据集Optdigits的转换

weixin_42593155的博客 821

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

三维点云处理-PCA主成分分析

三维点云处理在三维重建、SLAM、机器人感知等领域都有涉及,那么如何更好地分析和利用三维点云数据也一直是一个比较热门的研究话题。常用的三维点云处理库如 PCL(Point Cloud Library)和 Open3D等。点云通常是指某个坐标系下点的集合。每个点可以包含多个维度的信息,如空间三维坐标(XYZ)、颜色(RGB)、强度值(Intensity)等等。

weixin_49401384的博客 2983

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

三维点云处理(二)——PCA

上一回我们介绍了点云的基本概念,然后介绍了不同感知源头获取到数据的各种特征,之后是处理点云数据的一些主流方法,今天开始正式进入传统数学方法的研究下面正式开始介绍提示:今天学习的PCA,是除了深度学习之外,另一种做图像信息识别的传统方法,在理论推演过程中涉及到线性代数和对称矩阵变换等数学方法,需要我们对谱定理,瑞利熵定理和奇异值分解知识有一定基础,还需要了解数据点在不同维度聚类的情况,降维在不同向量上的特征表现。CSND知乎文章B站视频。

weixin_45563167的博客 2507

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

深入解析:利用PCA进行高效的点云配准

在计算机视觉和三维建模领域,点云配准是一个基础且关键的任务。它涉及将来自不同视角或不同时间点的点云数据对齐到一个统一的坐标系统中。本文将深入探讨如何利用主成分分析(PCA)来实现高效且准确的点云配准。

m0_61703832的博客 2984

三维点云处理01-PCA代码实现

三维点云处理-PCA代码实现 基础知识点 1.特征值与特征向量的意义 2.方阵的特征值分解(nxn) 3.一般矩阵的特征值分解(mxn)——SVD 分解 4.谱定理 5.瑞立熵 代码实现 #!/usr/bin/python3 import os import numpy as np from pyntcloud import PyntCloud def PCA(data,sort=True): ''' PCA函数实现: 输入: data:点云数据 sort:是否排序 输出: w:特征值

m0_45388819的博客 1049

三维点云处理:2 PCA(Principle Component Analysis主成分分析)和K-PCA

PCA(Principle Component Analysis主成分分析) PCA(Principal Components Analysis)主成分分析,应用于点云预处理,平面检测,法向量求解,降维、分类,解压(升维),用PCA对点云中的点分类,地面点,墙面点,物体上的点等,然后再做其他处理。 PCA是将三维投影到某个面上,用于发现其主要方向。面的选择依据是选择尽量使得点的分布方差最大,分布较散的面。例如: 一、 在正式介绍PCA前我们先说一些基础的数学概念和两个公式: 向量的内积:就是一个向量投影

sweetorange_的学习笔记 1万+

Dataset之Handwritten Digits:Handwritten Digits(手写数字图片识别)数据集简介、安装、使用方法之详细攻略

Dataset之Handwritten Digits:Handwritten Digits(手写数字图片识别)数据集简介、安装、使用方法之详细攻略 目录 Handwritten Digits数据集的简介 Handwritten Digits数据集的安装 Handwritten Digits数据集的使用方法 Handwritten Digit...

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 1万+

点云处理——PCA主成分分析

这位大佬讲的很好。在这里引用一下。/ 三维点云处理:2 PCA(Principle Component Analysis主成分分析)和K-PCA

qq_34729374的博客 1865

One-class SVM算法对Optdigits数据集进行异常值检测,给个代码。

One-class SVM算法可以用来进行异常值检测,用于检测离群值。对于Optdigits数据集的异常值检测,可以使用如下代码: from sklearn import svm from sklearn import datasets import numpy as np # 加载Optdigits数据集 data = datasets.load_digits() X = data.data ...

weixin_35754676的博客 363

机器学习SVM--基于手写字体识别

手写字体optdigits识别:每一行代表一个手写字体图像,最大值为16,大小64,然后最后一列为该图片的标签值。import numpy as np from sklearn import svm import matplotlib.colors import matplotlib.pyplot as plt from PIL import Image from sklearn.metrics ...

OliverkingLi的博客 1万+
上一篇: 算法导论习题(持续更新)
下一篇: MeanShift算法原理及其python自定义实现
Leo-Ma
博客等级 码龄11年 1701粉丝 124原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值