降维之PCA主成分分析算法
来源:互联网 发布:mac air sd卡 windows 编辑:程序博客网 时间:2024/05/22 19:51
一、算法原理
算法流程:
input:
样本集:
低维空间维数d
process:
1.对所有样本进行中心化
2.计算样本的协方差矩阵
3.对协方差矩阵做特征值分解
4.取最大的d个特征值所对应的特征向量
output:
投影矩阵:
注:以上算法流程改编自周志华《机器学习》
算法补充:
1.协方差矩阵公式:
据查阅貌似有两个版本:
问题:为何协方差矩阵可以由矩阵乘以矩阵的转置得来?两个版本公式在何种情况下相等?
2.矩阵的特征值
因为v是特征向量,是n维的非零向量。
所以只能是前面的A-λE为0矩阵。
然后得到:
这也是矩阵A的特征向量的求法。
3.关于矩阵的补充:
1.n阶矩阵A有n个特征值
2.奇异矩阵:对应行列式为0的方阵。
二、PCA降维实现鸢尾花数据二维可视化代码笔记
import matplotlib.pyplot as pltfrom sklearn.decomposition import PCAfrom sklearn.datasets import load_irisdata=load_iris()y=data.targetX=data.datapca=PCA(n_components=2)reduced_X=pca.fit_transform(X)#在数据x上运用适合X降维的方法将x数据改变适应该算法。之前的数据都没有降维处理但是这里因为降维处理数据了所以需要额外引用transform函数。print(reduced_X)#得到数据中心化后协方差矩阵特征值的前两个特征值。#创建空数组red_x, red_y = [], []blue_x, blue_y = [], []green_x, green_y = [], []for i in range(len(reduced_X)):#reduced_X是一个150行两列的矩阵,计算长度的时候只计算纵向的长度 if y[i] == 0: red_x.append(reduced_X[i][0]) red_y.append(reduced_X[i][1])#red_x和red_y分别装载数据的两个值根据y[i]判定数据是什么种类的鸢尾花。 elif y[i] == 1: blue_x.append(reduced_X[i][0]) blue_y.append(reduced_X[i][1]) else: green_x.append(reduced_X[i][0]) green_y.append(reduced_X[i][1])#绘制散点图plt.scatter(red_x, red_y, c='r', marker='x')plt.scatter(blue_x, blue_y, c='b', marker='D')plt.scatter(green_x, green_y, c='g', marker='.')plt.show()
阅读全文
0 0
- 降维之PCA主成分分析算法
- 7 主成成分分析(PCA)降维算法
- 主成分分析 PCA算法
- 主成分分析 PCA算法
- 主成分分析 PCA算法
- 主成分分析 PCA算法
- [PCA]主成分分析算法
- 机器学习之降维算法2-主成分分析(PCA)
- 机器学习---降维之PCA主成分分析法
- PCA主成分分析实现降维
- [zz]主成分分析 PCA算法
- 主成分分析 PCA算法原理
- 主成分分析(pca)算法原理
- PCA主成分分析算法数学推导
- PCA算法(主成分分析)
- Python PCA主成分分析算法
- 主成分分析(PCA)算法原理介绍
- 从零开始实现主成分分析(PCA)算法
- iOS 如何获取点击的是哪个tableViewCell上的Button按钮?
- Android 蓝牙开发(一)蓝牙通信
- 前端 AES加密依赖引用
- log4j.properties 详解与配置步骤
- Ubuntu下安装多个jdk互不影响
- 降维之PCA主成分分析算法
- maven项目更改部署路径WEB-INF后mian方法报错找不到或无法加载主类
- Android 扫一扫功能实现 (集成ZXing)
- 【计算机视觉】从运动中恢复结构SfM-场景重建,三维重建
- 基础资料、业务单据,新增时默认值设置,初始值设定
- Zend Studio + XDebug 断点无效的问题
- Spring定时任务
- mysql安装出现error 1045
- Android Studio Javadoc配置