PCA降纬一步一步

时间:2022-11-11 18:22:03

import numpy as np

第一步:原始值

X1

0.9

2.4

1.2

0.5

0.3

1.8

0.5

0.3

2.5

1.3

X2

1

2.6

1.7

0.7

0.7

1.4

0.6

0.6

2.6

1.1

第二步:计算平均值

=1.17,np.mean(x1)=1.1700000000000002

=1.3,  np.mean(x2)=1.3

第三步:X1 - ,X2 - ,得到如下表格

X11

0.9-=-0.27

2.4-=1.23

1.2-=0.03

0.5-=-0.67

0.3-=-0.87

1.8-=0.63

0.5-=-0.67

0.3-=-0.87

2.5-=1.33

1.3-=0.13

X22

1-=-0.3

2.6-=1.3

1.7-=0.4

0.7-=0.6

0.7-=0.6

1.4-=0.1

0.6-=-0.7

0.6-=-0.7

2.6-=1.3

1.1-=-0.2

x11 = x1 -np.mean(x1)

x11

Out[46]: array([-0.27,  1.23,  0.03, -0.67, -0.87,  0.63, -0.67, -0.87,  1.33,  0.13])

x22 = x2 -np.mean(x2)

x22

Out[48]: array([-0.3,  1.3,  0.4, -0.6, -0.6,  0.1, -0.7, -0.7,  1.3, -0.2])

第四步:计算协方差矩阵(X11,X12)

covx12 = np.cov(x11,x2)

covx12

Out[51]:

array([[ 0.68677778,  0.60666667],

[ 0.60666667,  0.59777778]])

 

第五步:计算特征值和特征向量covx12

w,v = np.linalg.eig(covx12)

w

Out[53]: array([ 1.25057433,  0.03398123])

v

Out[54]:

array([[ 0.73251454, -0.68075138],

[ 0.68075138,  0.73251454]])

The number w is an eigenvalue of a if there exists a vector v such that dot(a,v) = w * v. Thus, the arrays a, w, and v satisfy the equations dot(a[:,:], v[:,i]) = w[i] * v[:,i]for .

 

np.dot(covx12,v[:,0])

Out[62]: array([ 0.91606388,  0.8513302 ])

 

w[0]*v[:,0]

Out[63]: array([ 0.91606388,  0.8513302 ])

 

np.dot(covx12,v[:,1])

Out[64]: array([-0.02313277,  0.02489174])

 

w[1]*v[:,1]

Out[65]: array([-0.02313277,  0.02489174])

 

根据矩阵特征向量大小排序,两个特征向量顺序为 v[:,0],v[:,1].

 

第六步:降低纬度

 

 

 

 

X11

X12

 

 

 

 

   

 

 

 

 

 

(X11,X12)10行*2列      *         V[:,0] 2行*1列     得到 = 10行*1列

从而达到由每个2纬向量变为1纬向量的目的

 

PCA降纬一步一步的更多相关文章

  1. 【转载】一步一步搭建自己的iOS网络请求库

    一步一步搭建自己的iOS网络请求库(一) 大家好,我是LastDay,很久没有写博客了,这周会分享一个的HTTP请求库的编写经验. 简单的介绍 介绍一下,NSURLSession是iOS7中新的网络接 ...

  2. 一步一步教你实现iOS音频频谱动画(一)

    如果你想先看看最终效果再决定看不看文章 -> bilibili 示例代码下载 第二篇:一步一步教你实现iOS音频频谱动画(二) 基于篇幅考虑,本次教程分为两篇文章,本篇文章主要讲述音频播放和频谱 ...

  3. 如何一步一步用DDD设计一个电商网站(九)—— 小心陷入值对象持久化的坑

    阅读目录 前言 场景1的思考 场景2的思考 避坑方式 实践 结语 一.前言 在上一篇中(如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成),有一行注释的代码: public interfa ...

  4. 如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成

    阅读目录 前言 建模 实现 结语 一.前言 前面几篇已经实现了一个基本的购买+售价计算的过程,这次再让售价丰满一些,增加一个会员价的概念.会员价在现在的主流电商中,是一个不大常见的模式,其带来的问题是 ...

  5. 如何一步一步用DDD设计一个电商网站(十)—— 一个完整的购物车

     阅读目录 前言 回顾 梳理 实现 结语 一.前言 之前的文章中已经涉及到了购买商品加入购物车,购物车内购物项的金额计算等功能.本篇准备把剩下的购物车的基本概念一次处理完. 二.回顾 在动手之前我对之 ...

  6. 如何一步一步用DDD设计一个电商网站(七)—— 实现售价上下文

    阅读目录 前言 明确业务细节 建模 实现 结语 一.前言 上一篇我们已经确立的购买上下文和销售上下文的交互方式,传送门在此:http://www.cnblogs.com/Zachary-Fan/p/D ...

  7. 如何一步一步用DDD设计一个电商网站(六)—— 给购物车加点料,集成售价上下文

    阅读目录 前言 如何在一个项目中实现多个上下文的业务 售价上下文与购买上下文的集成 结语 一.前言 前几篇已经实现了一个最简单的购买过程,这次开始往这个过程中增加一些东西.比如促销.会员价等,在我们的 ...

  8. 如何一步一步用DDD设计一个电商网站(五)—— 停下脚步,重新出发

    阅读目录 前言 单元测试 纠正错误,重新出发 结语 一.前言 实际编码已经写了2篇了,在这过程中非常感谢有听到观点不同的声音,借着这个契机,今天这篇就把大家提出的建议一个个的过一遍,重新整理,重新出发 ...

  9. 如何一步一步用DDD设计一个电商网站(四)—— 把商品卖给用户

    阅读目录 前言 怎么卖 领域服务的使用 回到现实 结语 一.前言 上篇中我们讲述了“把商品卖给用户”中的商品和用户的初步设计.现在把剩余的“卖”这个动作给做了.这里提醒一下,正常情况下,我们的每一步业 ...

随机推荐

  1. 使用jQuery,实现完美的表单异步提交

    jQuery异步提交表单 <form id="form1" method="post"> <table border="1&quot ...

  2. windows phone 8 开发系列(一)环境搭建

    一:前奏说明 本人一名普通的neter,对新玩意有点小兴趣,之前wp7出来的时候,折腾学习过点wp7开发,后来也没怎么用到(主要对微软抛弃wp7的行为比较不爽),现在wp8已经出来一段时间了,市场上也 ...

  3. 使用hexdump 查看二进制文件

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...

  4. 跨平台的zip文件压缩处理,支持压缩解压文件夹

    根据minizip改写的模块,需要zlib支持 输出的接口: #define RG_ZIP_FILE_REPLACE 0 #define RG_ZIP_FILE_APPEND 1 //压缩文件夹目录, ...

  5. poj 3255 求次大最短路

    Roadblocks Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 5508   Accepted: 2088 Descri ...

  6. 每位iOS开发人员不容错过的10大实用工具

    内容简介 1.iOS简介 2.iOS开发十大实用工具之开发环境 3.iOS开发十大实用工具之图标设计 4.iOS开发十大实用工具之原型设计 5.iOS开发十大实用工具之演示工具 6.iOS开发十大实用 ...

  7. css模拟Bootstrap响应式布局——栅格

    做作业的时候遇见用css模拟Bootstrap的栅格布局,学习了一下.发现这个很有用,用来在不同的平台上得到很好地用户体验,比如Phone.Pad.大屏幕显示器.小屏幕显示器.自己模拟用css写了一下 ...

  8. log4j2 自定义配置文件,java载入

    http://logging.apache.org/log4j/2.x/faq.html#separate_log_files How do I reconfigure log4j2 in code ...

  9. 比较有意思的原生态js拖拽写法----摘自javascript高级程序设计3

    var DragDrop = function () { var dragging = null; var diffX = 0; var diffY = 0; function handleEvent ...

  10. Spring Security构建Rest服务-1400-授权

    安全分为 认证和授权,前边讲的都是认证,现在说授权. 前端业务系统的权限简单些,一般只区分是否登录,复杂点的还会区分 VIP用户等简单的角色,权限规则基本不变. 后台系统比较复杂,角色众多,权限随着业 ...