MCPcopy Create free account
hub / github.com/Dod-o/Statistical-Learning-Method_Code / do_pca

Function do_pca

PCA/PCA.py:86–106  ·  view source on GitHub ↗

INPUT: X - (array) 特征数据数组 k - (int) 设定的主成分个数 OUTPUT: fac_load - (array) 因子负荷量数组 dimrates - (list) 可解释偏差列表 Y - (array) 主成分矩阵

(X, k)

Source from the content-addressed store, hash-verified

84
85#定义主成分分析函数
86def do_pca(X, k):
87 '''
88 INPUT:
89 X - (array) 特征数据数组
90 k - (int) 设定的主成分个数
91
92 OUTPUT:
93 fac_load - (array) 因子负荷量数组
94 dimrates - (list) 可解释偏差列表
95 Y - (array) 主成分矩阵
96
97 '''
98 eigvalues, V = cal_V(X) #计算特征值和V矩阵
99 Vk = V[:, :k] #取V矩阵的前k列
100 Y = np.matmul(Vk.T, X) #计算主成分矩阵,将m*n的样本矩阵X转换成k*n的样本主成分矩阵
101 dimrates = [i / sum(eigvalues) for i in eigvalues[:k]] #计算可解释偏差,即前k个奇异值中每个奇异值占奇异值总和的比例,这个比例表示主成分i可解释原始数据中的可变性的比例
102 fac_load = np.zeros((k, X.shape[0])) #用来保存主成分的因子负荷量
103 for i in range(k):
104 for j in range(X.shape[0]):
105 fac_load[i][j] = np.sqrt(eigvalues[i]) * Vk[j][i] / np.sqrt(np.var(X[j])) #计算主成分i对应原始特征j的因子负荷量,保存到fac_load中
106 return fac_load, dimrates, Y
107
108
109if __name__ == "__main__":

Callers 1

PCA.pyFile · 0.85

Calls 1

cal_VFunction · 0.85

Tested by

no test coverage detected