利用PCA进行坐标系转换

pca是一种常用的数据降维的方法,而其中的降维的步骤就是:

  • 选取前 k 个特征值。

如果我们不选择这个步骤,那么就不会进行降维了,反而会进行坐标系的转换。

具体步骤

1、首先生成高斯二维分布的数据

matlab代码

mul = [1 2];
SIGMA = [1 0.81; 0.81 1];
data1 = mvnrnd(mul,SIGMA,500);
plot(data1(:,1),data1(:,2),'*');
axis equal

2. 使用PCA进行坐标轴的选取

新坐标的优化目的:使得坐标轴正交,并且沿着这些坐标方向的数据的方差最大。

clear;clc;close all;
mul = [1 2];
SIGMA = [1 0.81; 0.81 1];
data1 = mvnrnd(mul,SIGMA,500);
[pc,score,latent] = pca(data1);
figure(1)
axis equal
plot(data1(:,1),data1(:,2),'*');
hold on
quiver(1,2,pc(1,1),pc(2,1),5)
quiver(1,2,pc(1,2),pc(2,2),5)
plot(sore(:,1),score(:,2))


这样就可以建立出新的坐标系。

3.m代码主要流程介绍

  1. 生成高斯二维分布的随机数据
  2. pca函数的使用
  3. 在坐标上画向量

PCA进行多维降维以及降维效果的评价

有时候pca降维的时候会损失数据的局部的流形,造成不好的效果。

1、生成数据

先定义一个函数,用来生成一系列有规律的点

%生成一系列园点
function [x1,y1] = creat_circle(r1 , r1_ratio,sita_ratio)
sita = 0:0.05:2*pi;
all_num = size(sita);
all_num = all_num(1,2);
%rand : sita
sita_p = randperm(all_num,floor(sita_ratio*all_num));
%rand : r
r_p = rand(1,floor(sita_ratio*all_num))*r1*r1_ratio;
r1_p = repmat(r1,1,floor(sita_ratio*all_num));
r1_p = r1_p - r_p;
x1 = r1_p.*cos(sita_p);
y1 = r1_p.*sin(sita_p);
scatter(x1,y1)

然后运行下列代码:

% 建立坐标点
clear;clc;close all;
[x1,y1] = creat_circle(3,0.05,0.95);
[x2,y2] = creat_circle(5,0.05,0.95);
[x3,y3] = creat_circle(9,0.05,0.95);
num = size(x1);
z1 = normrnd(5,1,1,num(1,2))+x1;
z2 = wgn(1,num(1,2),1)+4+y2;
z3 = rand(1,num(1,2))+2+x3;
% 画
figure(1)
scatter(x1,y1,'r')
hold on
scatter(x2,y2,'b')
scatter(x3,y3,'g')
figure(2)
scatter3(x1,y1,z1,'r')
hold on
scatter3(x2,y2,z2,'b');
scatter3(x3,y3,z3,'g');

生成好以后,我们可以看看这些点的分布。
换个角度,可以看出规律。我们希望降维后也保存这种规律。
然而实际上,使用PCA进行降维后(降到2维)是这样的:
这样一来降维的效果就不好了。

使用pca进行坐标系转换、降维相关推荐

  1. R语言高维数据的pca、 t-SNE算法降维与可视化分析案例报告

    维度降低有两个主要用例:数据探索和机器学习.它对于数据探索很有用,因为维数减少到几个维度(例如2或3维)允许可视化样本.然后可以使用这种可视化来从数据获得见解(例如,检测聚类并识别异常值).对于机器学 ...

  2. 主成分分析旋转矩阵MATLAB实现,R语言高维数据的主成分pca、t-SNE算法降维与可视化分析案例报告...

    维度降低有两个主要用例:数据探索和机器学习.它对于数据探索很有用,因为维数减少到几个维度(例如2或3维)允许可视化样本.然后可以使用这种可视化来从数据获得见解(例如,检测聚类并识别异常值).对于机器学 ...

  3. R语言辅导高维数据的主成分pca、 t-SNE算法降维与可视化分析案例报告

    降低维度有两个主要用例:数据探索和机器学习.它对于数据探索很有用,因为维数减少到几个维度(例如2或3维)允许可视化样本.然后可以使用这种可视化来从数据获得见解(例如,检测聚类并识别异常值).对于机器学 ...

  4. 相机与图像--小孔成像模型与坐标系--坐标系转换

    利用图像序列进行三维重建的过程,相当于把一张张由很多像素组成的二维图像还原到三维空间中的一个过程.通过了解整个投影的过程,就可以很容易理解如何利用图像进行三维重建,以及三维重建中的关键步骤是什么.该小 ...

  5. 【机器学习】基于PCA/LDA的数据降维和可视化(二维+三维)

    基于PCA/LDA的数据降维和可视化 Introduction Project Intro File Intro Tools Intro Code&Dataset Link Process P ...

  6. PCA(主成分分析)降维方法

    一.降维 1)首先我们可以将数据以矩阵的形式表示出来,例如Xmxn,即m个数据样本,每个数据样本有n维度的特征(这个特征就是数字,n维特征就是n个数字表示了这个样本).降维的目的就是减小n,比如降低维 ...

  7. 【Python】使用sklearn PCA对人脸数据降维

    [python]sklearn PCA对人脸数据降维与识别 1. PCA 1.1 PCA原理 1.2 sklearn PCA使用方法 2. 人脸数据降维 2.1 读取图片 2.2 使用PCA进行降维 ...

  8. R语言plotly可视化:使用PCA算法进行数据降维、使用plotly可视化随着主成分的增加解释的方差的量(plotting explained variance)

    R语言plotly可视化:使用PCA算法进行数据降维.使用plotly可视化随着主成分的增加解释的方差的量(plotting explained variance) 目录

  9. R语言plotly可视化:使用PCA算法进行数据降维、使用plotly可视化PCA所有的主成分绘制散点图矩阵、降维后的两个(三个)核心主成分的二维、三维可视化图形、方差解释的量、载荷图等

    R语言plotly可视化:使用PCA算法进行数据降维.使用plotly可视化PCA所有的主成分绘制散点图矩阵.降维后的两个(三个)核心主成分的二维.三维可视化图形.方差解释的量.载荷图等 目录

最新文章

  1. python面试-Python面试题(整理)
  2. js判断字符串包含某个字符_python判断字符串以什么开始
  3. TensorFlow 2——【module ‘tensorflow.compat.v1‘ has no attribute ‘contrib‘】解决方案
  4. 如何利用数据分析买到好房子?
  5. SAP Hybris的Convertor, Populator, Facade和DTO这几个概念是如何协同工作的
  6. php编译 ftp,无需重新编译php加入ftp扩展的解决方法
  7. ASP.NET伪静态-无法读取配置文件,因为它超过了最大文件大小的解决办法
  8. 机器学习算法-随机森林初探(1)
  9. 旷视开源了一套图像检索和ReID的PyTorch库
  10. 语义slam_语义SLAM: 接轨深度学习的新方向
  11. yum yum doesn‘t match version of Python 终极解决方案
  12. 太阳升起并下落的小动画-SWIFT
  13. fortigate的RADIUS域用户的组认证为SSL×××用户(上)
  14. Play项目的application.conf的配置
  15. 沸点网络电视 v3.2 官方版
  16. JFrame显示透明图片与动态图片
  17. 什么是运维高手的境界?
  18. 石家庄地铁查询系统开发进度
  19. 手机内存清理软件,让你的手机更轻更快!
  20. 5分钟教你掌握异常检测方法

热门文章

  1. 大数据面试题(一):HDFS核心高频面试题
  2. html video添加字幕,HTML5标签:video元素的使用方法及作用
  3. “卖惨”的悲情牌打多了,营销终将变“悲剧”
  4. Jenkins 自动化部署流水线优化经验
  5. 小程序解决上拉加载更多时数据超过1024KB
  6. solid works 插入两两相交直线确定的基准面作图
  7. 【巴什博弈 抢夺资源】
  8. python列表索引超出范围 等于啥_Python列表错误,列表索引超出范围
  9. 创意库|Photoshop超跑汽车海报设计实例
  10. 人性化,中国制造新境界