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

时间:2019-11-11 10:28:08   收藏:0   阅读:541

本文参考自: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. 用途:

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

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

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!