楼主: baboooon
3821 0

[其他] python3进行多因子pca分析 计算得分矩阵 [推广有奖]

  • 0关注
  • 0粉丝

讲师

69%

还不是VIP/贵宾

-

威望
0
论坛币
104 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
6480 点
帖子
298
精华
0
在线时间
10 小时
注册时间
2016-9-5
最后登录
2019-11-19

楼主
baboooon 发表于 2016-9-5 12:09:42 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
import xlrd
import numpy as  np
import pandas as pd


def read_excel(filename):
    data_list = []
    table = xlrd.open_workbook(filename).sheets()[0]
    for i in range(table.nrows):
        data_list.append(table.row_values(i))
    return data_list

#计算矩阵均值
def meanX(dataX):
    return np.mean(dataX,axis = 0)

#计算矩阵标准差
def stdX(dataX):
    return np.std(dataX,axis = 0,ddof = 1)
    #return np.array([1.15166,20.40489,2.70361])

def pca(Xmat,k):
    m,n = np.shape(Xmat)
    #减去均值
    average = meanX(Xmat)
    data_adjust1 = []
    avgs = np.tile(average,(m,1))
    data_adjust1 = Xmat-avgs
    #除以标准差
    std = stdX(data_adjust1)
    data_adjust2 = []
    stds = np.tile(std,(m,1))
    data_adjust2 = data_adjust1/stds
    #计算协方差矩阵
    covX = np.cov(data_adjust2.T)
    #计算协方差矩阵的特征值与特征向量
    featValue,featVec = np.linalg.eig(covX)
    #按照featValue从大到小排序
    index = np.argsort(-featValue)
    finalData = []
    if k>n:
        print('k必须小于参数个数')
        return
    else:
        selectVec = np.matrix(featVec.T[index[:k]])
        t = selectVec.T   
    #计算载荷矩阵
        #将标准化后的矩阵以及主成分矩阵数组化
    data_adjust3 = np.matrix(data_adjust2.T).getA()
    finalData1 = finalData.T.getA()
    zaihe_list = []
    for each in data_adjust3:
        zaihe_list.append(np.corrcoef(each,finalData1[0])[0][1])
    #计算特征向量,荷载矩阵除以特征值
    featValues = featValue[index[0]]
    tezheng = np.array(zaihe_list)/featValues
    resultX = data_adjust2*np.matrix(tezheng).T
    return resultX


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:python 多因子 pca filename corrcoef return import 标准差

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-30 15:51