一 PCA分析法介绍

可以理解为是一种降维的思想,将M列数据降维成对应的N列数据,用主要的几个字段解释整体方差变异
也可以理解为一种低维度的映射,举例将三维的数据找到一个二维映射面,同时可以尽力解释出较多的信息来
举例如下图所示:

二 PCA分析法的基础步骤

1.对数据求平均值,即求取对应的均值u=E(X)
2.对特征数据进行去中心化处理,即X= X-E(X)=X-u
3.对去中心化处理的特征矩阵求取协方差矩阵COV(X)
4.对协方差矩阵求特征根和特征向量numta1,namuta2,numta3…及对应特征向量
5.求前K个对应大的特征向量
6.将原始M维去中心化的特征矩阵乘上由特征向量(按列组合)组成的矩阵,就可得到最终的结果N维

三 相关代码

3.1 手工计算对应的代码

#加载库
import numpy as np
import matplotlib.pyplot as plt#加载数据
def load_data(file_name, delim='\t'):fr = open(file_name)str_arr = [line.strip().split(delim) for line in fr.readlines()]dat_arr = [list(map(float,line)) for line in str_arr]return np.mat(dat_arr)#定义PCA方法
def pca(data_mat, topNfeat = 999999):# 求平均值mean_val = np.mean(data_mat, axis = 0)#去中心化mean_removed = mean_val - data_mat# 获取协方差矩阵cov_mat = np.cov(mean_removed, rowvar=0)#  获取特征根及特征向量eigen_vals, eigen_vecs = np.linalg.eig(cov_mat)# 特征根排序eigen_val_ind = np.argsort(eigen_vals)# 删除解释量小的特征根eigen_val_ind = eigen_val_ind[:-(topNfeat+1):-1]print(eigen_val_ind)# 由高到低排序red_eigen_vecs = eigen_vecs[:,eigen_val_ind]print(red_eigen_vecs)# l新维度的数据low_data_mat = mean_removed * red_eigen_vecs#  获取目标向量值recon_mat = (low_data_mat * red_eigen_vecs.T) + mean_valreturn low_data_mat, recon_mat# 主函数调用
if __name__ == '__main__':data_mat = load_data("data.txt")low_data_mat, recon_mat = pca(data_mat, 1)plt.figure()plt.scatter(data_mat[:,0].flatten().A[0], data_mat[:,1].flatten().A[0], marker='^', s = 90)plt.scatter(recon_mat[:,0].flatten().A[0], recon_mat[:,1].flatten().A[0], marker='o', s = 50, c = "red")plt.show()

3.2 机器学习PCA计算的代码

## 使用机器学习的内置函数计算,使用鸢尾花数据
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt#加载数据
iris = load_iris()
x = iris.keys()
data_x = iris.data
data_y = iris.target
#print(data_y,data_x)#PCA方法训练并求取新维度的数据
pca = PCA(n_components=2)
pca = pca.fit(data_x)
x_dr = pca.transform(data_x)#图形化显示
plt.scatter(x_dr[data_y==0,0],x_dr[data_y==0,1],c='red',label=iris.target_names[0])
plt.scatter(x_dr[data_y==1,0],x_dr[data_y==1,1],c='green',label=iris.target_names[1])
plt.scatter(x_dr[data_y==2,0],x_dr[data_y==2,1],c='blue',label=iris.target_names[2])
plt.legend
plt.title("iris dataset")
plt.show()

鸢尾花的二维显示效果:

PCA分析法的python主要代码相关推荐

  1. MATLAB AHP AHP层次分析法code 自写代码 完美运行。 权重设计

    MATLAB AHP AHP层次分析法code 自写代码 完美运行. 权重设计 ID:5150612144581085YouthOG

  2. Spearman 相关性分析法,以及python的完整代码应用

    Spearman 相关性分析法 简介 Spearman 相关性分析法是一种针对两个变量之间非线性关系的相关性计算方法,同时,它不对数据的分布进行假设.该方法的基本思想是将两个(也可以多个)变量的值进行 ...

  3. AHP层次分析法与python代码讲解(处理论文、建模)

    目录 AHP是啥 题目  ①构建阶梯层次结构 ②构建判断矩阵 ④综合算术平均法 .几何平均法.特征值法求权重  方法1:算术平均法求权重 一般步骤  表达式解释 代码实现 方法2:几何平均法求权重 一 ...

  4. AHP分析法(python代码实现)

    AHP的简介 层次分析法(Analytic Hierarchy Process (AHP))是的一种主观赋值评价方法,将与决策有关的元素分解成目标.准则.方案等多个层次,并在此基础上进行定性和定量分析 ...

  5. 【数学建模】层次分析法(AHP)-Python实现

    1 前言 本文主要讲解层次分析法(AHP)的python实现,后续会跟进实例分析 2 代码实现 导入包 import numpy as np 2.1 构造判断矩阵 判断矩阵一般采用专家意见法,也就是德 ...

  6. 层次分析法之python

    目录 1.简介 2.算法解析 3.实例分析 3.1 构造矩阵 3.2 查看行数和列数 3.3 求特征向量 3.4 找到最大特征值和最大特征向量 3.5 计算权重 3.6 一致性检验 3.7 计算评分 ...

  7. 联合分析法(Python实现)

    本文介绍联合分析法及如何用Python实现. 使用到的数据 链接:https://pan.baidu.com/s/1uOJpytFB_iHPHRG7F4-zJA  提取码:x5n4 简介: 联合分析法 ...

  8. 编译原理:自上而下LL(1)分析法实验(c++代码实现)

    程序输入/输出示例: 对下列文法,用LL(1)分析法对任意输入的符号串进行分析: (1)E->TG (2)G->+TG (3)G->ε (4)T->FS (5)S->*F ...

  9. R语言中如何进行PCA分析?利用ggplot和prcomp绘制基因表达量分析图

    学习笔记的主要内容是在R语言中利用ggplot2进行PCA分析和绘图,包括简单分析与操作流程,对比不同方式得到的结果差异,提供脚本代码供练习. PCA分析的原理 在处理基因差异表达数据时,有时候需要分 ...

最新文章

  1. 『Numpy』np.ravel()和np.flatten()
  2. php判断单选框是否被选中,jquery怎么判断radio是否选中
  3. Java类的加载过程详解 面试高频!!!值得收藏!!!
  4. 计算机ftp怎么登陆新用户,多用户登录ftp
  5. Python并发之协程gevent基础
  6. python之父子进程间通信
  7. java switch case多个条件_JAVA基础程序设计之判断与循环
  8. 哥大首位华裔女校长:人工智能的春天来了
  9. pytorch,cuda8,torch.cuda.is_available return flase (ubuntu14)
  10. eigrp 负载均衡和非负载均衡实验
  11. 数学建模——五步方法
  12. plc编程语言是c语言吗,PLC各种编程语言特点你了解多少?
  13. 【笔记】操作系统题目整理
  14. Bootstrap关于导航条点击后移出此区域背景颜色变白
  15. 使用PIE下载Sentinel-2 时序NDVI数据
  16. xp计算机用户名和密码忘记了怎么办,忘记XP的用户名和密码怎么办?
  17. Python入门基础总结笔记——正则表达式
  18. 二阶常系数微分方程的通解
  19. oracle查询部门名称,oracle查询习题(一)
  20. textarea文本框的placeholder文字换行

热门文章

  1. 需求评审时测试人员都需要做什么?
  2. AUTOCAD_ELECTRICAL从入门到放弃(二)导线的绘制与连接
  3. 去掉Win回收站右键的<固定到“开始”屏幕>选项。
  4. Snorkel 学习笔记 简介与入门 LF TF SF Labeling Functions Transformation Function Slicing Function 示例
  5. Linux驱动-使用软定时器实现PWM输出
  6. Scratch3.0——助力新进程序员理解程序(十一、自制积木)
  7. 清理目录下的空文件夹
  8. 佳能C5235彩色激光复印机复印有底灰
  9. stepbystep记录在30岁转型IT的自学之路
  10. 淘宝网最佳实践之ABS自动编译