PCA降维的例子

Bambi ·
更新时间:2024-11-11
· 878 次阅读

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)#降维后的数据 济职 原创文章 230获赞 112访问量 23万+ 关注 私信 展开阅读全文
作者:济职



pca

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章