PCA算法 python版本

  • 原理
  • 算法流程
  • 特性
  • PCA求主方向python代码
  • 法向量python,使用sklearn建树
  • PCA算法的局限
  • PCA算法应用:

原理

PCA算法,全程主成分分析法,是一种非监督的算法;主要用于数据的姜维,通过将为可以用较为简单的特征来代替原来的特征,在分类任务中可以使用PCA算法进行特征降维,然后减小计算量;

算法流程

特性

  1. 得到的奇异值分解的结果中,最大特征值对应的特征向量就是PCA得到的主方向,而且将所有的点映射到这个向量上得到到映射后的新点集方差最大,所以主方向可以最大程度保留数据的原始特性;

  2. 最小特征值对应的特征向量为法向量方向,法向量的起点为用于求奇异值分解点集的中心点;且法向量越大的点处曲率越小

3) 在求某点法向量的时候,需要确定该点的邻域半径,然后使用邻域内的点组成的点集来计算法法向量;半径选择太大,会受到不相关部分影响,导致法向量平滑;半径过小会容易受到噪声影响;半径不仅可以使用欧式空间邻域,同样可以使用其他尺度的邻域,包括反射率邻域,颜色邻域等;

PCA求主方向python代码

import numpy as np
def PCA(data):data_col = np.mean(data,axis = 0)data = data - data_colB = np.dot(data.T,data)#计算协方差矩阵eigenvectors,eigenvalues, v = np.linalg.svd(B)#计算协方差矩阵的特征值和特征向量sort = eigenvalues.argsort() #argsort返回列表从大到小排序之后在原始列表中的位置eigenvalues = eigenvalues[sort]eigenvectors = eigenvectors[:, sort]return  eigenvectors

法向量python,使用sklearn建树

def get_normals():normals = []radius = 0.05leaf_size = 5  tree = KDTree(points,leaf_size)near_point_idx = tree.query_radius(points,radius)#每一点的邻居点索引,包含自身点for i in range(points.shape[0]):point_near = points[near_point_idx[i]] #某一点的邻居点,v = PCA(point_near)normal = v[:,2]normals.append(normal)normals = np.asarray(normals)

PCA算法的局限

  1. 如果用户对观测对象有一定的先验知识,掌握了数据的一些特征,却无法通过参数化等方法对处理过程进行干预,可能会得不到预期的效果,效率也不高;

  2. 特征值分解有一些局限性,比如变换的矩阵必须是方阵;

  3. 在非高斯分布情况下,PCA方法得出的主元可能并不是最优的。

PCA算法应用:

  1. 高维数据集的探索与可视化。
  2. 数据压缩。
  3. 数据预处理。
  4. 图象、语音、通信的分析处理。
  5. 降维(最主要),去除数据冗余与噪声。

PCA算法(python版本)相关推荐

  1. 2021-03-15 数据挖掘算法—K-Means算法 Python版本

    数据挖掘算法-K-Means算法 Python版本 简介 又叫K-均值算法,是非监督学习中的聚类算法. 基本思想 k-means算法比较简单.在k-means算法中,用cluster来表示簇:容易证明 ...

  2. 2021-01-28 粒子群优化算法-Python版本和Matlab函数 particleswarm 调用

    粒子群优化算法-Python版本和Matlab函数 particleswarm 调用 前两天分享了粒子群优化算法的原理和Matlab原理实现,本文分享一下Python代码下的PSO实现以及Matlab ...

  3. pca算法python代码_三种方法实现PCA算法(Python)

    主成分分析,即Principal Component Analysis(PCA),是多元统计中的重要内容,也广泛应用于机器学习和其它领域.它的主要作用是对高维数据进行降维.PCA把原先的n个特征用数目 ...

  4. pca算法python实现_三种方法实现PCA算法(Python)

    主成分分析,即Principal Component Analysis(PCA),是多元统计中的重要内容,也广泛应用于机器学习和其它领域.它的主要作用是对高维数据进行降维.PCA把原先的n个特征用数目 ...

  5. 光谱预处理算法(python版本)

    系列文章目录 近红外光谱分析技术属于交叉领域,需要化学.计算机科学.生物科学等多领域的合作.为此,在(北京邮电大学杨辉华老师团队)指导下,近期准备开源传统的PLS,SVM,ANN,RF等经典算和SG, ...

  6. PCA算法python实现

    PCA 1. 算法原理 2. 算法流程总结 3. python算法实现 3.1 一个实例 3.2 结果 1. 算法原理 pca是特征降维的经典算法之一,特征降维直白来说就是降低样本的特征维度同时又不希 ...

  7. pca算法python实现_PCA算法——Python实现

    一.流程生成模拟数据 模型训练 特征向量重要性分析 画图 二.Python语言 1.生成模拟数据 # 导入相关数据库 from sklearn import datasets ​ # 提取数据 dig ...

  8. 排序算法python版本

    1.冒泡排序 # coding:utf-8# 冒泡排序 # 1. 外层循环负责帮忙递减内存循环的次数[len-1, 1] # 2. 内层循环负责前后两两比较, index 的取值范围[0, len-2 ...

  9. pca算法python_PCA算法和python实现

    第十三章 利用PCA来简化数据 一.降维技术 当数据的特征很多的时候,我们把一个特征看做是一维的话,我们数据就有很高的维度.高维数据会带来计算困难等一系列的问题,因此我们需要进行降维.降维的好处有很多 ...

最新文章

  1. 前端每周清单半年盘点之 WebAssembly 篇
  2. tensorflow--embedding_lookup 和 embedding_lookup_sparse
  3. 小程序api 分享scene_抛弃微信小程序API的嵌套回调吧!
  4. 【java】swing编写窗体
  5. 在linux桌面上显示图标
  6. UVA465 Overflow【大数】
  7. SEAYAR - 思雅,快乐生活
  8. 内核调试工具 — kdump crash
  9. linux centos erlang,CentOS 7.7安装Erlang和Elixir
  10. Kinect + OpenNI + OpenCV + OpenGL 三维重建
  11. [概率论与数理统计-1]: 总体架构、知识结构、知识体系
  12. CSS3颜色渐变整理
  13. 计算机桌面底边出现库如何去掉,桌面图标有蓝底怎么去掉? 去掉桌面图标阴影技巧...
  14. php 对接 hotmail邮箱,php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍
  15. Jdbc结果集Map映射
  16. 使用uview UI工具库的时间格式化出现的问题
  17. arm裸机与嵌入式linux驱动开发,如何编写基于ARM的裸机程序和基于Linux的驱动程序?...
  18. 《Android开发从零开始》——3.第一个Android程序
  19. MARC21与CNMARC对应关系
  20. flutter git 拉不起来_这些基础不牢固,我们的蛙泳就别想拉起来

热门文章

  1. BGP Lab AS-path prepend last-as
  2. Mysql数据库常用的命令大全
  3. camera AE 效果出现闪烁问题排除方式
  4. 小马哥------高仿小米Mi Note 出现市场 精仿机 拆机主板图与开机界面图与鉴别方法 真假难辨 购买警惕
  5. linux远程桌面连接_如何从Linux连接到远程桌面
  6. 暴雪娱乐-魔兽世界:人物艺术
  7. uptime命令详解
  8. GOF---责任链模式(职责链模式)
  9. 【js】根据出生日期算出年龄,获取最近几天日期,实现身份证计算生日,性别,年龄,深度比较两个对象是否相同
  10. Aqara门窗传感器与yeelight吸顶灯实现跨品牌跨种类场景联动