PCA主成分分析 原理讲解 python代码实现

本文参考自:https://github.com/apachecn/AiLearning/blob/master/src/py2.x/ml/13.PCA/pca.py

https://github.com/lawlite19/MachineLearning_Python#%E5%85%ADpca%E4%B8%BB%E6%88%90%E5%88%86%E5%88%86%E6%9E%90%E9%99%8D%E7%BB%B4

1. 用途:

  • 通俗来说: 考察一个人的智力情况,就直接看数学成绩就行(存在:数学、语文、英语成绩) 。就是找出一个最主要的特征,然后进行分析。
  • 数据压缩 (Data Compression) ,将高维数据变为低维数据。
  • 可视化数据 (3D->2D等)

2. 2D-->1D,nD-->kD

  • 如下图所示,所有数据点可以投影到一条直线,是投影距离的平方和(投影误差)最小
  • 注意数据需要归一化处理
  • 思路是找1向量u,所有数据投影到上面使投影距离最小
  • 那么nD-->kD就是找k个向量,所有数据投影到上面使投影误差最小
  • eg:3D-->2D,2个向量就代表一个平面了,所有点投影到这个平面的投影误差最小即可

3. 降维原理(数学推导)

        

# 归一化数据
   def featureNormalize(X):
       ‘‘‘(每一个数据-当前列的均值)/当前列的标准差‘‘‘
       n = X.shape[1]
       mu = np.zeros((1,n));
       sigma = np.zeros((1,n))

       mu = np.mean(X,axis=0)
       sigma = np.std(X,axis=0)
       for i in range(n):
           X[:,i] = (X[:,i]-mu[i])/sigma[i]
       return X,mu,sigma

Sigma = np.dot(np.transpose(X_norm),X_norm)/m  # 求Sigma

(3)求?的特征值和特征向量。  

eigVals,eigVects = np.linalg.eig(np.mat(Sigma))

  

>>> x = np.array([3, 1, 2])
>>> np.argsort(x)
    array([1, 2, 0])  # index,1 = 1; index,2 = 2; index,0 = 3
>>> y = np.argsort(x)
>>> y[::-1]
    array([0, 2, 1])
>>> y[:-3:-1]
    array([0, 2])  # 取出 -1, -2
>>> y[:-6:-1]
    array([0, 2, 1])

 eigValInd = argsort(eigVals)
 # print ‘eigValInd1=‘, eigValInd

 # -1表示倒序,返回topN的特征值[-1 到 -(topNfeat+1) 但是不包括-(topNfeat+1)本身的倒叙]
 eigValInd = eigValInd[:-(topNfeat+1):-1]
 # print ‘eigValInd2=‘, eigValInd
 # 重组 eigVects 最大到最小
redEigVects = eigVects[:, eigValInd]

(5)求降维后的数值  

 lowDDataMat = meanRemoved * redEigVects

  

原文地址:https://www.cnblogs.com/carlber/p/11832859.html

时间: 2024-10-08 08:34:32

PCA主成分分析 原理讲解 python代码实现的相关文章

catboost原理以及Python代码

原论文:    http://learningsys.org/nips17/assets/papers/paper_11.pdf catboost原理: One-hot编码可以在预处理阶段或在训练期间完成.后者对于训练时间而言能更有效地执行,并在Catboost中执行. 类别特征: 为了减少过拟合以及使用整个数据集进行训练,Catboost使用更有效的策略. 1.对输入的观察值的集合进行随机排列,生成多个随机排列: 2.给定一个序列,对于每个例子,对于相同类别的例子我们计算平均样本值: 3.使用

深入浅出通信原理(Python代码版)

深入浅出通信原理Python代码版 深入浅出通信原理是陈爱军的心血之作,于通信人家园连载,此处仅作python代码笔记训练所用 陈老师的连载从多项式乘法讲起,一步一步引出卷积.傅立叶级数展开.旋转向量.三维频谱.IQ调制.数字调制等一系列通信原理知识 连载1:从多项式乘法说起 \[ (x+1)(x^2+2x+5)=x^3+3x^2+7x+5 \] import sympy x = sympy.Symbol('x') sympy.expand((x+1)*(x*x+2*x+5)) 这种计算方法总结

PCA(主成分分析)原理,步骤详解以及应用

主成分分析(PCA, Principal Component Analysis) 一个非监督的机器学习算法 主要用于数据的降维处理 通过降维,可以发现更便于人类理解的特征 其他应用:数据可视化,去噪等 主成分分析是尽可能地忠实再现原始重要信息的数据降维方法 原理推导: 如图,有一个二维的数据集,其特征分布于特征1和2两个方向 现在希望对数据进行降维处理,将数据压缩到一维,直观的我们可以想到将特征一或者特征二舍弃一个,可以得到这样的结果 ------- : 舍弃特征1之后 ------- : 舍弃

【主成分分析】PCA主成分分析原理详解

声明:本文是转载自他处,原文载于此:http://blog.csdn.net/zhongkelee/article/details/44064401 一.PCA简介 1. 相关背景 上完陈恩红老师的<机器学习与知识发现>和季海波老师的<矩阵代数>两门课之后,颇有体会.最近在做主成分分析和奇异值分解方面的项目,所以记录一下心得体会. 在许多领域的研究与应用中,往往需要对反映事物的多个变量进行大量的观测,收集大量数据以便进行分析寻找规律.多变量大样本无疑会为研究和应用提供了丰富的信息,

机器学习之PCA主成分分析

前言            以下内容是个人学习之后的感悟,转载请注明出处~ 简介 在用统计分析方法研究多变量的课题时,变量个数太多就会增加课题的复杂性.人们自然希望变量个数较少而得到的 信息较多.在很多情形,变量之间是有一定的相关关系的,当两个变量之间有一定相关关系时,可以解释为这两个变量反 映此课题的信息有一定的重叠.主成分分析是对于原先提出的所有变量,将重复的变量(关系紧密的变量)删去多余,建立 尽可能少的新变量,使得这些新变量是两两不相关的,而且这些新变量在反映课题的信息方面尽可能保持原有

快速指数算法+python代码

算法原理: Python代码: 1 def kuaiSuZhiShu(di, zhiShu, mod): 2 zhiShu2 = bin(zhiShu)[2:] 3 length = len(zhiShu2) 4 jieGuo = di**int(zhiShu2[0]) 5 for i in range(1, length): 6 jieGuo = jieGuo**2 % mod 7 jieGuo = jieGuo*di**int(zhiShu2[i]) % mod 8 return jieGu

主成分分析法原理及其python实现

主成分分析法原理及其python实现 前言: 这片文章主要参考了Andrew Ng的Machine Learning课程讲义,我进行了翻译,并配上了一个python演示demo加深理解. 本文主要介绍一种降维算法,主成分分析法,Principal Components Analysis,简称PCA,这种方法的目标是找到一个数据近似集中的子空间,至于如何找到这个子空间,下文会给出详细的介绍,PCA比其他降维算法更加直接,只需要进行一次特征向量的计算即可.(在Matlab,python,R中这个可以

PCA主成分分析Python实现

作者:拾毅者 出处:http://blog.csdn.net/Dream_angel_Z/article/details/50760130 Github源代码:https://github.com/csuldw/MachineLearning/tree/master/PCA PCA(principle component analysis) .主成分分析,主要是用来减少数据集的维度,然后挑选出基本的特征.原理简单,实现也简单.关于原理公式的推导,本文不会涉及,你能够參考以下的參考文献,也能够去W

主成分分析(PCA)原理及R语言实现

原理: 主成分分析 - stanford 主成分分析法 - 智库 主成分分析(Principal Component Analysis)原理 主成分分析及R语言案例 - 文库 主成分分析法的原理应用及计算步骤 - 文库 主成分分析之R篇 [机器学习算法实现]主成分分析(PCA)——基于python+numpy scikit-learn中PCA的使用方法 Python 主成分分析PCA 机器学习实战-PCA主成分分析.降维(好) 关于主成分分析的五个问题 主成分分析(PCA)原理详解(推荐) 多变