PCA降维工作原理及代码案例实现
PCA降维工作原理
PCA利用了协方差矩阵的特征值分解。过程分为四个步骤:
(1)创建数据集的协方差矩阵
协方差:用来度量两个随机变量关系的统计量
(2)保留协方差矩阵的特征值
(3)保留前K个特征值(特征值按照降序排列)
(4)用保留的特征向量转换为新的数据点
用鸢尾花数据集为例
鸢尾花数据集有150行4列,每行(观察值)代表一朵花
每列代表花的4种定量特点
1.先看一下要预测花的名称和用于预测的特征名称,为了更好了解数据,先查看一下其中两个特征。
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
import numpy as nplda=LinearDiscriminantAnalysis(n_components=2)
iris=load_iris()
iris_X,iris_y=iris.data,iris.target
iris.target_names#查看要预测花的名称
iris.feature_names#查看特征名称
label_dict={i:k for i,k in enumerate(iris.target_names)} #enumerate 用于将一个可以遍历的数据对象
def plot(X,y,title,x_label,y_label):ax=plt.subplot(111)for label,marker, color in zip(range(3),('^','s','o'),('blue','red','green')):plt.scatter(x=X[:,0].real[y==label],y=X[:,1].real[y==label],color=color,alpha=0.5,label=label_dict[label])# plt.xlabel(x_label)#plt.ylabel(y_label)#leg=plt.legend(loc='upper right',fancybox=True)# leg.get_frame().set_alpha(0.5)#plt.title('title')
#plot(iris_X,iris_y,"Original Iris Data","Sepal length(cm)","Sepal width(cm)")
#plt.show()
#计算均值向量
mean_vector=iris_X.mean(axis=0)
print(mean_vector)
#计算协方差矩阵 cov()求协方差矩阵
cov_mat=np.cov((iris_X).T)
print(cov_mat.shape)
#计算鸢尾花数据集的特征向量和特征值
eig_val_cov,eig_vec_cov=np.linalg.eig(cov_mat)#降序打印特征向量和相应的特征值
for i in range(len(eig_val_cov)):eigvec_cov=eig_vec_cov[:,i]print('Eigenvector {}:\n{}'.format(i+1,eigvec_cov))print('Eigenvalue {} from convariance matrix:{}'.format(i+1,eig_val_cov[i]))print(30*'*')#每个主成分解释的百分比是特征值除以特征值之和print('特征值之和为',eig_val_cov.sum())
explained_variance_ratio=eig_val_cov/eig_val_cov.sum()
print('各个主成分所占百分比',explained_variance_ratio)
#碎石图
plt.plot(np.cumsum(explained_variance_ratio))
plt.title('Scree Plot')
plt.xlabel('Principal Cpmponent(k)')
plt.ylabel('% of Variance Explained <=k')
plt.show()
花的名称和用于预测的名称如下:
查看其中两个特征:
使用Numpy计算协方差矩阵,计算协方差矩阵特征值,降序打印特征向量和相应特征值。这里有四个特征值,我们可以选择保留完整的4个特征,但是希望一般选择的逼原始特征数更少。这里借用工具库中的一个新工具——碎石图。
碎石图是一种简单的折线图,显示每个主成分解释数据总方差的百分比。要绘制碎石图,需要对特征进行降序排列,绘制每个主成分和之前每个主成分方差之和。在鸢尾花数据集上,碎石图有四个点,每个点代表一种主成分,每个主成分解释了总方差的每个百分比,相加后,所有主成分解释了数据集中总方差的100%。
取每个特征向量(主成分)的特征值,将其除以所有特征值得和,计算每个特征向量解释方差得百分比。
对于鸢尾花数据集得碎石图如下所示,x轴上有四个主成分,y是累积方差,每个数据点代表到这个主成分为止可以解释得方差比。
上图可以看出,前两个主成分占了原始方差近98%,意味着几乎可以用前两个特征向量作为新的主成分。可以将数据集缩小一半,(从4列缩到2列),而且保持了特征得完整性,加速了性能。
后续将最后保留的特征向量转换为新的数据点,将四维的鸢尾花数据集转换成只有两列得新矩阵,而且新矩阵可以在机器学习流水线中代替原始数据集。
PCA降维工作原理及代码案例实现相关推荐
- PCA降维算法原理及代码实现(python和matlab)
常见的数据降维算法有:奇异值分解(SVD).主成分分析(PCA).因子分析(FA).独立成分分析(ICA). PCA降维的基本思想:通过计算数据矩阵的协方差矩阵,然后得到协方差矩阵的特征值.特征向量. ...
- 【主成分分析】PCA降维算法及Matlab代码实现
前言 机器学习中经常会遇到高维变量的大数据集,并且大数据集的很多高维变量之间并不是独立的,它们之间往往存在相关关系.这些变量一方面为机器学习提供了大量的信息,另一方面由于信息冗余也增加了数据处理的 ...
- Java三大器之过滤器(Filter)的工作原理和代码演示
一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术之一,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, ...
- canal工作原理及简单案例演示
如果有一个这样的需求,数据修改后,需要及时将mysql中修改的记录同步到elasticsearch中,我们怎么来实现呢? 思考30s-,带着这个疑问我们来看一下canal如何为我们解决的 文章目录 1 ...
- RC振荡器工作原理分析,案例+公式,几分钟,带你搞定RC振荡器
在前面我已经给大家介绍了三种振荡器,Colpitts 振荡器.皮尔斯振荡器.哈特利振荡器.如果错过的话,可以点击下方标题直接跳转. colpitts振荡器电路图分析,几分钟,立马搞定colpitts振 ...
- spring web.xml中 过滤器(Filter)的工作原理和代码演示
一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术之一,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, ...
- PCA算法的原理以及代码实现
目录 PCA算法是如何实现的? 1.对原始数据零均值化(中心化) 2.求协方差矩阵 3.对协方差矩阵求特征向量和特征值 评价模型的好坏,K值的确定 PCA算法的优缺点: 优点: 缺点: PCA算法的实 ...
- PCA(主成分分析)的工作原理
PCA(Principal Component Analysis)是一种常用的数据分析方法.PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降 ...
- 【常用传感器】LCD1602液晶工作原理详解及例程代码
本文带你详细的了解下LCD1602液晶的工作原理以及代码编写 LCD1602液晶显示屏 LCD1602主要参数 LCD发光原理 LCD屏幕的组成: LCD和OLED区别: LCD1602引脚接线: L ...
最新文章
- 端午安康 | 经久熬煮,方能出“粽”
- 图灵奖得主Hopcroft对话智源理事长张宏江:人工智能战略、研究和教育
- 编程中经常碰到且觉得难的事是什么?
- LinksysWrt1900acs刷官方镜像并开启FTP
- 返聘前任员工:效率高出新人40%!
- git常见错误failed to push some refs to
- DHCP服务器-配置
- 数据科学 IPython 笔记本 9.10 数组排序
- 超分辨率技术如何发展?这6篇ECCV 18论文带你一次尽览
- Thinkphp 实现上一篇与下一篇的方法
- cad缩小了怎么还原_CAD的窗口突然不能缩小了怎么回事,应该怎么恢复
- 如何使用微小区一键生成可打印的物业缴费通知单
- H5如何获取内网IP和公网IP
- 小象学院python数据分析课程怎么样_小象学院的机器学习集训营课程怎么样?
- C++矩阵之岛屿的最大面积
- 用 Neo4j 快速构建明星关系图谱,你一定感兴趣
- 程序设计——第七周作业(Floyd:胜负未知场数;dijkstra:猫猫快线最快线路;SPFA:城市收税)
- 仿新浪微博的ListView下拉更新功能
- 最新哔哩哔哩视频弹幕播放器源码+带后台/亲测无错误
- 大二学科不挂科 速冲方法推荐(数据结构+计组+操作系统+算法+数据库+计网)