PCA 学习笔记
先简单记下,等有时间再整理
PCA 主要思想,把 协方差矩阵 对角化,协方差矩阵是实对称的。
里面涉及到矩阵论的一点基础知识:
基变换:
Base2 = P · Base1
相应的 坐标变换
P · coordinate2 = coordinate1
将 X 转换到 Y,Y = P · X , X是原来的基,Y是新的基,P是过渡矩阵。
后面可以用 实对称阵的相似对角化来处理。
D = Y · Y^T = P(1/m·X·X^T)P^T
讲的有点乱
直接上代码 和图吧。
# -*- coding=utf-8 -*- import numpy as np
import pandas as pd
import matplotlib.pyplot as plt '''
PCA is similar diagnalization Covariance Matrix
''' X = pd.read_csv('testSet.txt',header=None,delimiter='\t').as_matrix()
# print(X) # 1.0centralization
# print(X.mean(axis=0)) [9.0639,9.096]
X_cen = X - X.mean(axis=0)
# 2.0 covariance matrix
cov_X = np.dot(X_cen.T,X_cen) / X_cen.shape[0]
# 3.0 get eigVector which is p A = pXX^Tp^T
# Y = p
eigVal,eigVector = np.linalg.eig(cov_X)
P = eigVector[:,::-1]
# P[:,-1] = np.array([0,0])
# Y = np.dot(P,(X_cen.T)).T
print(P)
P = np.linalg.inv(P)
'''
[-0.52045195 -0.85389096]
[-0.85389096 0.52045195]]
''' cor = np.linspace(-2,2,1000)
plt.plot(X_cen[:,0],X_cen[:,1],'.b')
plt.plot(cor,cor*P[0,1]/P[0,0],'-r')
# plt.plot(Y[:,0],Y[:,1],'.r')
plt.show()
参考:
https://www.cnblogs.com/mikewolf2002/p/3429711.html
PCA 学习笔记的更多相关文章
- PCA学习笔记
主成分分析(Principal Component Analysis,简称PCA)是最常用过的一种降维方法 在引入PCA之前先提到了如何使用一个超平面对所有的样本进行恰当的表达? 即若存在这样的超平面 ...
- 数据降维PCA——学习笔记
PCA主成分分析 无监督学习 使方差(数据离散量)最大,更易于分类. 可以对隐私数据PCA,数据加密. 基变换 投影->内积 基变换 正交的基,两个向量垂直(内积为0,线性无关) 先将基化成各维 ...
- 机器学习13—PCA学习笔记
主成分分析PCA 机器学习实战之PCA test13.py #-*- coding:utf-8 import sys sys.path.append("pca.py") impo ...
- LDA PCA 学习笔记
提要: 本文主要介绍了和推导了LDA和PCA,参考了这篇博客 LDA LDA的原理是,将带上标签的数据(点),通过投影的方法,投影到维度更低的空间中,使得投影后的点,会形成按类别区分,一簇一簇的情况, ...
- 机器学习实战(Machine Learning in Action)学习笔记————09.利用PCA简化数据
机器学习实战(Machine Learning in Action)学习笔记————09.利用PCA简化数据 关键字:PCA.主成分分析.降维作者:米仓山下时间:2018-11-15机器学习实战(Ma ...
- Deep Learning(深度学习)学习笔记整理系列之(五)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
- Deep Learning(深度学习)学习笔记整理系列之(四)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
- Deep Learning深入研究整理学习笔记五
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
- cips2016+学习笔记︱简述常见的语言表示模型(词嵌入、句表示、篇章表示)
在cips2016出来之前,笔者也总结过种类繁多,类似词向量的内容,自然语言处理︱简述四大类文本分析中的"词向量"(文本词特征提取)事实证明,笔者当时所写的基本跟CIPS2016一 ...
随机推荐
- Java-Runoob-面向对象:Java 抽象类
ylbtech-Java-Runoob-面向对象:Java 抽象类 1.返回顶部 1. Java 抽象类 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的 ...
- hadoop map任务Combiner被调用的源码逻辑简要分析
从MapTask类中分析下去,看一下map任务是如何被调用并执行的. 入口方法是MapTask的run方法,看一下run方法的相关介绍: org.apache.hadoop.mapred. ...
- node中的favicon.icon请求
var http=require("http"); var server=http.createServer(); server.on("request", c ...
- 安装Oracle 10g RAC是否需要安装HACMP
实际上无论在哪个操作系统(AIX,HP-UX,Solaris,Linux)上安装Oracle10g RAC都不再需要Vendor Clusterware(IBM的HACMP,HP的Service Gu ...
- 主从DNS服务器的搭建
一.DNS主从的理解 主从服务器,在一开始的理解中,以为是主的dns服务器挂掉后,(dns服务自动转向辅助dns服务器),客户端还能继续解析.事实貌似不是这样的.当我把主dns停掉的时候,客户端只设一 ...
- windows administrator提升system
最近刚好有这个需求,本想开一个super cmd,但是win10上不兼容不太好. 于是使用PsExec来提升system权限. 微软传送地址:https://docs.microsoft.com/en ...
- Dev GridControl 选择行及绑定/获取List对象
GridControl绑定List对象一般是为了获取焦点行时直接获得该行代表的List对象,或者为了实现嵌套表格,对第一中情况,起始不用绑定List,绑定DataTable也可以实现获取对应List对 ...
- SVN 提交、更新、解决冲突等操作步骤
1. 纳入版本控制 ①新建文件abc.txt ②在文件上点右键 ③添加后文件图标发生变化 2. 提交 ①使用TortoiseSVN可以提交具体某一个文件,或某一个目录下的所有改变.方法就是在想要提交的 ...
- 第八篇 实例化Flask的参数 及 对app的配置
Flask 是一个非常灵活且短小精干的web框架 , 那么灵活性从什么地方体现呢? 有一个神奇的东西叫 Flask配置 , 这个东西怎么用呢? 它能给我们带来怎么样的方便呢? 首先展示一下: from ...
- pandas入门学习
索引对象 pandas的索引对象负责管理轴标签和其他元数据(比如轴名称等).构建series或DataFrame时,所用到的任何数组或其他序列的标签都会转换成一个index: In [1]: impo ...