import numpy as np import matplotlib.pyplot as plt #载入数据 data=np.genfromtxt("data.csv",delimiter=",") x_data=data[:,0] y_data=data[:,-1] plt.scatter(x_data,y_data) plt.show() print(x_data.shape) #数据中心化 def zeroMean(dataMat): #按列求平均,即各个特征的平均 meanVal=np.mean(dataMat,axis=0) newData=dataMat-meanVal return newData,meanVal newData,meanVal=zeroMean(data) #np.cov用于求协方差矩阵,参数rowvar=0说明数据一行代表一个样本、 covMat=np.cov(newData,rowvar=0) #print(covMat) #np.linalg.eig求矩阵的特征值和特征向量 eigVals,eigVectors=np.linalg.eig(np.mat(covMat)) print(eigVals)#特征值 print(eigVectors)#特征向量 #对特征值从小到大进行排序 eigValIndice=np.argsort(eigVals) #选取最大的top个特征值的小标:topk,k为需要降到的维度 top=1 n_eigValIndice=eigValIndice[-1:-(top+1):-1] #最大的n个特征值所对应的特征向量 n_eigVect=eigVectors[:,n_eigValIndice] print(n_eigVect) lowDataMat=newData*n_eigVect print(lowDataMat)#降维后的数据
PCA降维的例子
最新推荐文章于 2023-10-08 21:13:05 发布