主成分分析(PCA)原理详解
Matlab-PCA
Sort eigenvalues and associated eigenvectors after using numpy.linalg.eig in python
What does n[::-1] means in Python?
PCA in numpy and sklearn produces different results
How to draw a line with matplotlib?
Matplotlib.axes.Axes.plot


# -*- coding: utf-8 -*-
"""
Created on Tue Jan 23 15:56:06 2018@author: brucelau
"""import numpy as np
import matplotlib.pyplot as pltfig, ax = plt.subplots()def data_vis(d,s=0.5):ax.scatter(d[:,0],d[:,1],s=s)ax.grid()def drawArrow1(B,m,c="pc1",):# fc: filling color# ec: edge colorif c=='pc1':fc='r'ec='r's=0.1else:fc='g'ec='g's=0.1ax.arrow(m[0][0],m[1][0], B[0], B[1],length_includes_head=True,# 增加的长度包含箭头部分head_width=s, head_length=s, fc=fc, ec=ec,label='abc')# 注意: 默认显示范围[0,1][0,1],需要单独设置图形范围,以便显示箭头ax.set_xticks(np.linspace(0,4,9))ax.set_yticks(np.linspace(0,4,9))ax.set_xlim(0,4)ax.set_ylim(0,4)ax.set_aspect('equal') #x轴y轴等比例# make data
data = np.array([[2.5,2.4],[0.5,0.7],[2.2,2.9],[1.9,2.2],[3.1,3.0],[2.3,2.7],[2.0,1.6],[1.0,1.1],[1.5,1.6],[1.1,0.9]]).T
m = np.mean(data,axis=1,keepdims=1)
data_adjust = data-m
data_adjust2 = data_adjust.T
# visualize data
data_vis(data.T,s=10)# calcalate conv
c = np.cov(data_adjust)
print('协方差矩阵:\n',c)# calculate eigenvalues and eigenvectors
D,V = np.linalg.eig(c)
idx = D.argsort()[::-1]
D = D[idx]
V = V[:,idx]
print('特征值\n',D)
print('特征向量\n',V)#%% get the pc1 and pc2
v1 = -V[:,0] # 确保特征向量方向和后文计算投影方向一致,故加负号
v2 = V[:,1]
print('主成分pcv-1 ',v1)
#%%
# visual eigenvector
drawArrow1(v2,m,c='pc2')
drawArrow1(v1,m,c='pc1')#%%
# calculate the final result
final = np.dot(data_adjust.T, v1)#%% calculate the final coordinate
theta = np.arctan(v1[1]/v1[0])
print('主成分pcv-1与x轴的夹角θ %f degree'%(theta/np.pi*180))
final_x = (final)*np.cos(theta)+m[0]
final_y = (final)*np.sin(theta)+m[1]
final_xy = np.vstack((final_x,final_y))
data_vis(final_xy.T,s=10)
ax.grid()
#%% y = k*(x-m[0])+m[1]
k = np.tan(theta)
m = m.reshape(2)
x1, y1 = [0, 4], [-k*m[0]+m[1],k*(4-m[0])+m[1]]
plt.plot(x1, y1, 'y--',linewidth=0.5)
plt.show()
plt.savefig('arrow.png', transparent = True, bbox_inches = 'tight', pad_inches = 0.25) 

MatlabCode

mu = [2,3];
sigma = [1,1.5;1.5,3];
rng default  % For reproducibility
r = mvnrnd(mu,sigma,1000);
figure
plot(r(:,1),r(:,2),'+')C = cov(r)
c = (r-mean(r))'*(r-mean(r))/999
[coeff,score,pcvar,mu,v,S] = ppca(r,2);
[coeff1,score1,latent1,tsquared1,explained1,mu1] = pca(r)hold on;
xx = linspace(-2,6,100);
yy = 0.8809/0.4733*(xx-mu(1))+mu(2);
plot(xx,yy)

180123 PCA主成分分析的原理解释及python代码实现相关推荐

  1. PCA主成分分析的原理解释及python代码实现

    主成分分析(PCA)原理详解  Matlab-PCA  Sort eigenvalues and associated eigenvectors after using numpy.linalg.ei ...

  2. 基于PCA主成分分析的BP神经网络回归预测MATLAB代码

    基于PCA主成分分析的BP神经网络回归预测MATLAB代码 代码注释清楚. 先对数据集进行主成分分析,自主根据贡献率选择主成分:同时计算KMO验证值:用PCA以后数据进行BP神经网络回归预测. 可以读 ...

  3. 【算法思想】Reed-Solomon 纠错编码基础概念,编码、解码算法原理、数学公式 Python代码实现

    [算法思想]Reed-Solomon 纠错编码基础概念,编码.解码算法原理.数学公式 & Python代码实现 文章目录 [算法思想]Reed-Solomon 纠错编码基础概念,编码.解码算法 ...

  4. 主成分分析法(PCA)的理解(附python代码案例)

    目录 一.PCA简介 二.举个例子 三.计算过程(公式) 3.0 题干假设 3.1 标准化 3.2 计算协方差矩阵 3.3 计算特征值和特征值向量 3.3 多重共线性检验(可跳过) 3.4 适合性检验 ...

  5. PCA主成分分析实战和可视化 | 附R代码和测试数据

    一文看懂PCA主成分分析中介绍了PCA分析的原理和分析的意义(基本简介如下,更多见博客),今天就用数据来实际操练一下.(注意:用了这么多年的PCA可视化竟然是错的!!!) 在公众号后台回复**&quo ...

  6. Tensorflow反卷积(DeConv)实现原理+手写python代码实现反卷积(DeConv)

    最近看到一个巨牛的人工智能教程,分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.平时碎片时间可以当小说看,[点这里可以去膜拜一下大神的" ...

  7. 决策树原理实例(python代码实现)_决策树原理实例(python代码实现)

    决策数(Decision Tree)在机器学习中也是比较常见的一种算法,属于监督学习中的一种.看字面意思应该也比较容易理解,相比其他算法比如支持向量机(SVM)或神经网络,似乎决策树感觉"亲 ...

  8. tfidf算法 python_tf–idf算法解释及其python代码实现(下)

    tf–idf算法python代码实现 这是我写的一个tf-idf的简单实现的代码,我们知道tfidf=tf*idf,所以可以分别计算tf和idf值在相乘,首先我们创建一个简单的语料库,作为例子,只有四 ...

  9. PCA主成分分析(原理+例子)

    转载请声明出处http://blog.csdn.net/zhongkejingwang/article/details/42264479 什么是PCA? 在数据挖掘或者图像处理等领域经常会用到主成分分 ...

最新文章

  1. SAP 限制出货数量小于销售订单数量
  2. MySQL——排序查询
  3. android驱动代码,GitHub - rumengsuifeng/AndroidDrivers: Android驱动的代码
  4. 关于CMS垃圾回收器的几个问题
  5. R语言中识别和去除重复行
  6. Q76:仿射变换(Affine Transformation)
  7. tetp服务器怎么上传文件,tftp服务器ip是什么 TFTP服务器怎么设置
  8. 线上数据库增加字段导致服务请求超时总结
  9. 配置NodeJS免安装环境变量,win7,win10
  10. istio 防故障流量控制
  11. tidb-analyze
  12. 商业创业计划书ppt你的绝佳选择
  13. 药品市场分析怎么写?(总结归纳了20份药品报告的经验分享)
  14. 《C语言程序设计》江宝钏主编-习题5-3-动态最大值!!!
  15. Office2013出现”停止工作“问题的解决
  16. PwC普华永道信息技术2023助理软件工程师面经总结
  17. 13个风格独特的关于(About)页面设计
  18. 区块链基础与网络安全
  19. 【ArcGIS风暴】ArcGIS tif转jpg:JPEG压缩仅支持8位或16位无符号数据(具有一个或三个波段,且没有色彩映射表)解决方案!
  20. 硬件测试点案例(四个)

热门文章

  1. 发现一个好的查找图片的网址
  2. Linux网络编程—Day11 高性能服务器程序框架
  3. c语言课程设计黄金矿工,C语言课程设计黄金矿工(提高篇)
  4. Power BI动态条形图展示数据趋势(头条、抖音常见)
  5. 理解 Linux 配置文件
  6. MAC电脑安全性与隐私中“任何来源”选项消失
  7. 将pyx文件编译成pyd文件(很多坑,已解决)
  8. 手机硬件的未来在哪里?
  9. VBA 函数参数和结果输出的二三事
  10. 我的计算机没有本地用户名,我的电脑没有本地连接怎么办