• 利用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) # 行代表主成分,即第一行为第一主成分
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    我们获得输出如下:

    排序的贡献率: [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]]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    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}}{\sqrt{V_{i}}} , 其中:L_{ij}代表第i个主成分中第j个载荷的数值,V_{i}代表第i个主成分的特征值。 λi=Vi Lij,其中: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=

  • 相关阅读:
    如何搭建一个vue项目(完整步骤)
    CVE-2020-9483 apache skywalking SQL注入漏洞
    vsc连接wsl安装vsc时遇到权限问题的解决方案
    HarmonyOS NEXT应用开发—Grid和List内拖拽交换子组件位置
    Reactive UI -- 反应式编程UI框架入门学习(一)
    Golang: Store Query Result in a Map
    【Java】计算程序耗时多少
    数据结构课设:基于字符串模式匹配算法的病毒感染检测问题
    Qt标准对话框设置
    大语言模型里的微调vs RAG vs 模板提示词
  • 原文地址:https://blog.csdn.net/qq_45100200/article/details/132925527