PCA dimensionality reduction source code (Python)

#调用sklearn库实现PCA
from sklearn import decomposition
pca = decomposition.PCA()
pca.fit(X_arr) #X_arr是原始数据集,一行表示一个样本,一列表示一个feature
pca.n_components = 2 #降为两维
X_reduced = pca.fit_transform(X_arr) #X_reduced是降维后的数据集
 

The above code runs without error!

#基于numpy自己实现PCA
import numpy as np
meanval=np.mean(X_arr, axis=0) #计算原始数据中每一列的均值,axis=0按列取均值
newData=X_arr-meanval #去均值化,每个feature的均值为0
covMat=np.cov(newData,rowvar=0) #计算协方差矩阵,rowvar=0表示数据的每一列代表一个feature
featValue, featVec=np.linalg.eig(covMat) #计算协方差矩阵的特征值和特征向量
index=np.argsort(featValue) #将特征值按从大到小排序,index保留的是对应原featValue中的下标
n_index=index[-1:-3:-1] #取最大的两维特征值在原featValue中的下标
n_featVec=featVec[:, n_index] #取最大的两维特征值对应的特征向量组成变换矩阵
lowData=np.dot(newData,n_featVec) #lowData=newData*n_featVec
highData=np.dot(lowData,n_featVec.T)+meanval #highData=(lowData*n_featVec.T)+meanval

The code has not been run.

References: https://blog.csdn.net/u012991043/article/details/81132410?tdsourcetag=s_pcqq_aiomsg

Guess you like

Origin blog.csdn.net/dqefd2e4f1/article/details/86774108