PCA降纬(python)
来源:互联网 发布:java微信cms系统源码 编辑:程序博客网 时间:2024/06/17 23:10
PCA降纬
pca降纬是一种无监督算法,是为了减少不必要的特征值,去除冗余或者对结果影响特别小的特征,产生较小误差
主成分分析(PCA)是一种维数降低算法,可以显着加速无人监督的特征学习算法。更重要的是,这是许多算法的重要预处理步骤。假设您正在对图像进行训练。那么输入将是有点冗余的,因为图像中相邻像素的值是高度相关的。具体来说,假设我们正在对16x16灰度图像补丁进行培训。然后是256个维度向量,其中一个特征对应于每个像素的强度。 由于相邻像素之间的相关性,PCA将允许我们使用较低维度近似输入,同时产生非常小的误差。
个人理解就是在更小的纬度表示更多纬度的数据,能够减小计算,因为是主成分分析,所以就是选择最主要的特征来表示
原理
1、构造二维数据集
现在设有一个二维数据x1,x2,下图表示
现在我们就是想要把这个二维的数据x1,x2,来用一维来表示,我们可以看出来就是在u1方向上变化的特征比较明显
2、进行零均值化,转化坐标
首先我们需要对x进行零均值化,然后计算x1,x2之间的协方差矩阵,协方差矩阵的对角线上就是对应的纬度方差
之后进行的就是计算特征值和特征向量,特征值的大小也就是在某一个方向上的变化的大小,上图的u1的特征值
变化要比u2大,所以就是选择u1的特征向量。。。。。特征值和特征向量计算,也就是每个样本在u1方向上
的投影,也就是样本在u2方向上的投影
然后我们用u1,u2来表示x这个样本,原来的样本x经过旋转变为现在的坐标,这是以u1,u2为基的坐标
,因为就是pca的原理就是舍弃不必要的纬度,然后因为本来是二维,所以就是要舍弃u2.
3、还原本来的数据
结果就是
个人感觉就是转化坐标基,然后就是选择在某个方向变化最大,也就是特征值最大的方向,然后用它的特征变量
舍弃掉一些不必要的特征变量,也就是舍弃某个方向上的变化,最后就是转化到原来的坐标
python代码实现
#coding:utf-8import numpy as npdef zeromean(dataMat): meanVal = np.mean(dataMat, axis=0)#axis=0表示按列求均值。每个特征的均值 newdata = dataMat-meanVal return newdata, meanValdata = open(r'D:\PythonDDD\shuju files\wine.txt')data1 = []for i in data: line = i.strip().split(',') line1 = map(float, line) data1.append(line1)# print data1dataMat = np.mat(data1)newdata, meanVal = zeromean(dataMat)covMat = np.cov(newdata,rowvar=0)#求协方差矩阵,!若rowvar=0,说明一行是一个样本,如果不是0,则# 就是一列代表一个样本#协方差矩阵表示每个特征与其他特征之间的相关系数,正相关或者负相关或者无关# print covMateigVals, eigVects=np.linalg.eig(np.mat(covMat))# print eigVals# 特征值和特征向量,通过他的行列式来计算特征值,然后求出对应每个特征值的特征向量eigValIndice = np.argsort(eigVals)#对特征值从小到大排序,返回的是排序后的索引# print eigValIndicen_eigValIndice = eigValIndice[-1:-(n+1):-1]#最大的n个特征值的下标.-1代表倒序,n在这里没有设置了哦
# print n_eigValIndicen_eigVect = eigVects[n_eigValIndice]lowdataMat = newdata*n_eigVectreconMat = (lowdataMat*n_eigVect.T)+meanVal#重构数据
阅读全文
0 0
- PCA降纬(python)
- 从PCA到Kernel PCA(Python)
- python版PCA(主成分分析)
- python pca example
- python 实现PCA
- python中实现PCA
- python的PCA
- PCA降维 python实现
- PCA的Python实现
- PCA降维---python
- PCA python代码实现
- python sklearn PCA库
- PCA python实现
- 【python】双向二维PCA(2D-2D PCA)算法实现
- python之实战----PCA、SVD、(NOnlinear PCA)KernelPCA、战iris
- 【机器学习系列】python版PCA(主成分分析)
- PCA(主成份分析法)技术及其Python实现
- python实现PCA(主成分分析)降维
- 字符串相似度算法
- C语言——数组与指针-元素的值
- Redis的安装过程及与SSM结合使用
- 并发技术_2_Exchanger
- 面试题---实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制。
- PCA降纬(python)
- 向量求导规则--最小二乘法求解最优解
- ICPC2017南宁邀请赛1001&&HDU6182(水
- Java中数据比较方式之==和equals比较
- 线性布局LinearLayout
- Apache beam其他学习记录
- 矩阵快速幂 [bzoi4000]棋盘
- 归并排序(优化版)
- linux中文件的批量创建与删除/改名