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一 ...
随机推荐
- 20165226 2017-2018-2《Java程序设计》课程总结
目录 一.作业汇总 二.总结 三.问卷调查 一.作业汇总 预备作业1:我期望的师生关系 预备作业2:学习基础和C语言基础调查 预备作业3:linux安装及学习 第一周: Java入门 第一周学习总结 ...
- Java字符代码中干掉制表符、回车符和换行符
Java字符代码中干掉制表符.回车符和换行符 代码片段: String sql = StringUtils.trim(sql).replaceAll("[\\r\\n\\t]",& ...
- python学习(二十六) 字典
# 访问字典car = {'make':'bmw', 'model':'550i', 'year':2016}print(car)print(car['make']) # 添加元素d = {}d['o ...
- 【UVA】673 Parentheses Balance(栈处理表达式)
题目 题目 分析 写了个平淡无奇的栈处理表达式,在WA了5发后发现,我没处理空串,,,,(或者说鲁棒性差? 代码 #include <bits/stdc++.h> usin ...
- python 之 functools模块
functools模块用于高阶函数:作用于或返回其他函数的函数.一般而言,任何可调用对象都可以作为本模块用途的函数来处理. 官方文档已经有了详尽的介绍,这里就不在复述,详情请见:官方文档 .这里主要介 ...
- Math对象及相关方法
Math.abs() 取绝对值 Math.ceil()向上取整 (出现小数点就向上+1) Math.floor()向下取整 Math.round()四舍五入 Math.max(val1,val2,va ...
- [Python] Request module
http://docs.python-requests.org/zh_CN/latest/user/quickstart.html
- PHP memcache client封装
config.inc.php $CONFIG_MEMCACHE['default'] = array( //'127.0.0.1:11211:100', '10.9.20.73:11211:100', ...
- Tomcat实践
1.1Java环境介绍 jdk java 开发工具包 jre sdk J2EE 企业版 J2SE 标准版 J2ME 手机开发 1.2Tomcat自动部署 通过saltstack来批量安装tomcat ...
- Win7 Wifi 老断线
在cmd命令窗口 netsh wlan set autoconfig enabled=no interface="无线网络连接" 此时你再来查看Win7系统任务栏处的网络菜单中查找 ...