利用PCA科学确定各个指标的权重系数

1、提取主成分

  • 对样本进行PCA分析,查看不同变量贡献率,确定主要的指标。

我们可以通过下列代码获取需要的所有数据:

import numpy as np
from sklearn.decomposition import PCA

# 创建一个数据
np.random.seed(0)
data = np.random.random((100,5))
y = np.random.randint(0,6,100)

# 进行pca
pca = PCA()
x_new = pca.fit_transform(data)

# 获取每个特征对于每个主成分的贡献率
explained_variance_ratio = pca.explained_variance_ratio_
print("排序的贡献率:",explained_variance_ratio)

# 获取每个特征对于每个主成分的特征值(排序了的)
explained_variance = pca.explained_variance_
print("排序的特征值:",explained_variance)

# 获取每个特征对于每个主成分的特征值(未排序的)
cov_matrix = np.cov(data.T) # 计算协方差矩阵
eigen_values, eigen_vectors = np.linalg.eig(cov_matrix) # 计算特征值和特征向量
print("未排序的特征值:",eigen_values)

# 获取载荷系数,即特征向量
components = pca.components_
print("排序的载荷系数,即特征向量:\n",components) # 行代表主成分,即第一行为第一主成分

我们获得输出如下:

排序的贡献率: [0.2679184  0.22563357 0.20109877 0.16265843 0.14269083]
排序的特征值: [0.11390347 0.09592639 0.08549561 0.06915299 0.06066392]
未排序的特征值: [0.11390347 0.09592639 0.08549561 0.06066392 0.06915299]
排序的载荷系数,即特征向量:
 [[ 0.2792074   0.32459124  0.54648931  0.5063108   0.51154917]
 [ 0.38799128 -0.41011012  0.47386964 -0.6498715   0.18543747]
 [-0.48817892  0.14380819 -0.23333252 -0.33626022  0.75728829]
 [-0.11980573 -0.83842108 -0.10090177  0.45633566  0.25352175]
 [-0.72030127 -0.05309911  0.64200605 -0.00179817 -0.25723834]]

2、计算各个变量的权重系数

  • 从上述结果中我们可以看出,前4个主成分的贡献率达到了85.73%,因此我们可以说所有指标基本可以由前四个主成分对应的指标代替(通过未排序的特征值确定是那几个指标)。
  • 随后我们计算这四个主成分的线性组合公式。计算这四个主成分的线性组合公式,我们需要计算他们的系数。
    • 确定主成分在各线性组合中的系数。
      在之前,我们先假设这5个变量分别是:a1、a2、a3、a4、a5。他们的系数分别是: λ 1 \lambda _{1} λ1 λ 2 \lambda _{2} λ2 λ 3 \lambda _{3} λ3 λ 4 \lambda _{4} λ4 λ 5 \lambda _{5} λ5
      公式: 系数 = 载荷系数 / 对应主成分的特征值的开方
      即: λ i = L i j V i ,其中: L i j 代表第 i 个主成分中第 j 个载荷的数值, V i 代表第 i 个主成分的特征值。 \lambda _{i}= \frac{L_{ij}}{V_{i}} , 其中:L_{ij}代表第i个主成分中第j个载荷的数值,V_{i}代表第i个主成分的特征值。 λi=ViLij,其中:Lij代表第i个主成分中第j个载荷的数值,Vi代表第i个主成分的特征值。
      例如第一主成分的线性组合公式:
      λ 1 = 0.2792074 0.11390347 = 0.82729 \lambda _{1}=\frac{0.2792074}{\sqrt{0.11390347}} = 0.82729 λ1=0.11390347 0.2792074=0.82729
      λ 2 = 0.32459124 0.11390347 = 0.96176 \lambda _{2}=\frac{0.32459124}{\sqrt{0.11390347}} = 0.96176 λ2=0.11390347 0.32459124=0.96176
      λ 3 = 0.54648931 0.11390347 = 1.61924 \lambda _{3}=\frac{0.54648931}{\sqrt{0.11390347}} = 1.61924 λ3=0.11390347 0.54648931=1.61924
      λ 4 = 0.5063108 0.11390347 = 1.50019 \lambda _{4}=\frac{0.5063108}{\sqrt{0.11390347}} = 1.50019 λ4=0.11390347 0.5063108=1.50019
      λ 5 = 0.51154917 0.11390347 = 1.51572 \lambda _{5}=\frac{0.51154917}{\sqrt{0.11390347}} = 1.51572 λ5=0.11390347

你可能感兴趣的:(笔记,python)