# -*- coding:utf-8 -*- # /usr/bin/python import numpy as np x = np.array([[1,2,3],[2,3,4],[1,2,5],[1,5,6],[2,5,7],[1,7,2],[4,1,1]]) x_mean = np.mean(x,axis=0) #取均值 x_nor = x-x_mean #计算协方差 x_cov = np.cov(x-x_mean,rowvar=0) #计算特征值和特征向量 x_cov_value,x_cov_vec = np.linalg.eig(x_cov) #指定降维数量 k=2 #按特征值由小到大排列的对应索引 x_index = np.argsort(x_cov_value) #获取由大到小的前2个 x_index_k = x_index[:-(k+1):-1] #前两个特征值对应的特征向量 x_cov_vec_k = x_cov_vec[:,x_index_k] print(x_nor.dot(x_cov_vec_k)) #特征值 #print(x_cov_value)
python自己实现PCA降维
最新推荐文章于 2024-03-17 09:57:00 发布