PCA降纬一步一步
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降纬一步一步的更多相关文章
- 【转载】一步一步搭建自己的iOS网络请求库
一步一步搭建自己的iOS网络请求库(一) 大家好,我是LastDay,很久没有写博客了,这周会分享一个的HTTP请求库的编写经验. 简单的介绍 介绍一下,NSURLSession是iOS7中新的网络接 ...
- 一步一步教你实现iOS音频频谱动画(一)
如果你想先看看最终效果再决定看不看文章 -> bilibili 示例代码下载 第二篇:一步一步教你实现iOS音频频谱动画(二) 基于篇幅考虑,本次教程分为两篇文章,本篇文章主要讲述音频播放和频谱 ...
- 如何一步一步用DDD设计一个电商网站(九)—— 小心陷入值对象持久化的坑
阅读目录 前言 场景1的思考 场景2的思考 避坑方式 实践 结语 一.前言 在上一篇中(如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成),有一行注释的代码: public interfa ...
- 如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成
阅读目录 前言 建模 实现 结语 一.前言 前面几篇已经实现了一个基本的购买+售价计算的过程,这次再让售价丰满一些,增加一个会员价的概念.会员价在现在的主流电商中,是一个不大常见的模式,其带来的问题是 ...
- 如何一步一步用DDD设计一个电商网站(十)—— 一个完整的购物车
阅读目录 前言 回顾 梳理 实现 结语 一.前言 之前的文章中已经涉及到了购买商品加入购物车,购物车内购物项的金额计算等功能.本篇准备把剩下的购物车的基本概念一次处理完. 二.回顾 在动手之前我对之 ...
- 如何一步一步用DDD设计一个电商网站(七)—— 实现售价上下文
阅读目录 前言 明确业务细节 建模 实现 结语 一.前言 上一篇我们已经确立的购买上下文和销售上下文的交互方式,传送门在此:http://www.cnblogs.com/Zachary-Fan/p/D ...
- 如何一步一步用DDD设计一个电商网站(六)—— 给购物车加点料,集成售价上下文
阅读目录 前言 如何在一个项目中实现多个上下文的业务 售价上下文与购买上下文的集成 结语 一.前言 前几篇已经实现了一个最简单的购买过程,这次开始往这个过程中增加一些东西.比如促销.会员价等,在我们的 ...
- 如何一步一步用DDD设计一个电商网站(五)—— 停下脚步,重新出发
阅读目录 前言 单元测试 纠正错误,重新出发 结语 一.前言 实际编码已经写了2篇了,在这过程中非常感谢有听到观点不同的声音,借着这个契机,今天这篇就把大家提出的建议一个个的过一遍,重新整理,重新出发 ...
- 如何一步一步用DDD设计一个电商网站(四)—— 把商品卖给用户
阅读目录 前言 怎么卖 领域服务的使用 回到现实 结语 一.前言 上篇中我们讲述了“把商品卖给用户”中的商品和用户的初步设计.现在把剩余的“卖”这个动作给做了.这里提醒一下,正常情况下,我们的每一步业 ...
随机推荐
- mongodb 对内嵌文档(数组) group分页查询,并设置查询条件
文档示例Account的其中一条记录: // collection: Account { "_id" : ObjectId("5843e38e535f3708f759b2 ...
- MS-MPI 的使用
MPI在windows上的扯淡 MPI的实现一般使用MPICH与OpenMPI,这两个库在12年的版本就已经停止了对windows的更新,不支持MPI的新特性(也不知道有没有bug方面的问题),配置的 ...
- IOS开发--自定义segment控件,方便自定义样式
系统的segment控件太封闭,想换个颜色加个背景太难了,忍不住自己写一个,以备不时之需 这个控件给出了很多自定义属性的设置,用起来还是比较方便的,需要注意的 itemWidth如果不设置,则会按照控 ...
- Android AChartEngine 饼图渐变效果
二话不说,先上图 核心代码如下: private void initLabelChat(View rootView) { NumberFormat nf = new DecimalFormat(&qu ...
- 使用spring连接及操作mongodb3.0
前边有一篇记录过不使用spring,直接在java代码中连接和操作mongodb数据库,这里就紧随其后记录一下使用spring的情况下,在java中简单操作mongodb. maven导包配置: ...
- 如何使用Chrome Timeline 工具(译)
[原文地址]https://developers.google.com/web/tools/chrome-devtools/profile/evaluate-performance/timeline- ...
- Codeforces Round #381 (Div. 2)D. Alyona and a tree(树+二分+dfs)
D. Alyona and a tree Problem Description: Alyona has a tree with n vertices. The root of the tree is ...
- 在阿里云主机上基于CentOS用vsftpd搭建FTP服务器
最近需要在一台阿里云的云服务器上搭建FTP服务器,在这篇博文中分享一下我们根据实际需求进行的一些配置. ftp软件用的是vsftpd. vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序 ...
- Python 多线程
一.线程的使用 需导入模块: from threading import Thread 二.基本使用 def fun1(arg1, v): print(arg1) print('before') t1 ...
- “XXX::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。
症状描述如下: 如果将一个委托作为函数指针从托管代码封送到非托管代码,并且在对该委托进行垃圾回收后对该函数指针发出了一个回调,则将激活 callbackOnCollectedDelegate 托管调试 ...