主成分的计算步骤如下:
1.
对数据进行标准化
2.
计算样本的协方差矩阵
;
3.
计算协差阵的特征根与特征向量
;
4.
计算每个特征值的贡献率;
5.
计算特征值累积贡献,选出主成分。
import pandas as pd
import numpy as np
from sklearn import preprocessing
df=pd.read_csv(r"rna.csv", encoding='gbk', index_col=0)
df=df.T #读入数据
X= preprocessing.scale(df)#中心标准化
cov=np.dot(X.T,X)#协方差阵
#求特征值w和特征向量v
w,v=np.linalg.eig(cov)
sum_lambda = np.sum(w)
f = np.divide(w, sum_lambda)# 每个特征值的贡献率(特征值 / 总和)
#求特征值的累计贡献度
lg = np.cumsum(f)
#选出主成分
k=[i for i in range(len(lg)) if lg[i]<0.85]#将满足if条件的值放入数组k中
k = list(k)
for i in range(len(lg)):
if lg[i]>=0.85:
print("----贡献值----")
print(lg[i])
break
print("————————选出主成分——————————")
k = list(k)
print(k)