PCA-python实现综合评价求解

PCA-python实现综合评价

今天帮人做了一个综合评价得分,下面是实现代码,Mat使我们的数据矩阵,k,是我们选择主成分数量,之后返回的是,主成分和特征值,我们求解一下贡献率,比值,加权求解就可以得到特征值,数据集我已上传到,我的资源当中,想要运行此代码的可以直接下载,也可以联系我
下面的代码并不全,我后面打算写一个续文,可以得到pca主成分,并且输出我们计算的评价指标到一个文件
续文已出,有完整代码:
点击跳转续文

数据显示如下:
在这里插入图片描述

import numpy as np



def pca_tre(Mat, k):
      p,n = np.shape(Mat) # shape of Mat
      t = np.mean(Mat, 0) # mean of each column
  
      # substract the mean of each column
      for i in range(p):
        for j in range(n):
          Mat[i,j] = float(Mat[i,j]-t[j])
      
      # covariance Matrix
      cov_Mat = np.dot(Mat.T, Mat)/(p-1)
  
      # PCA by original algorithm
      # eigvalues and eigenvectors of covariance Matrix with eigvalues descending
      U,V = np.linalg.eigh(cov_Mat) #U 是特征值
      index = np.argsort(-U) 
      if k > n:
            print("k must lower than feature number")
            return
      else:
            selectVec = np.matrix(V.T[index[:k]]) 
            finalData = Mat * selectVec.T 
      return finalData,U#主成分

import pandas as pd
data=pd.read_excel(r"C:\Users\gaoxi\Desktop\data.xlsx")
#print(data.iloc[:, 1:].values)
data=data.iloc[:, 1:].values
finalData,u=pca_tre(data,2)
print(finalData,u)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值