主成分分析法确定权重

在数模中,确定权重方法有很多种,比如主成分分析法、层次分析法、熵权法、相关系数作为权重等。
网上很多教程都是用spss计算权重,这里主要讲利用python通过主成分分析法确定权重。

主成分分析法概述

主成分分析法是一种线性的降维算法,通过将N维特征进行正交变换,得到相互独立的k维(k<N)数据,通过分析得出“主成分”,利用“主成分”确定影响权重。

数据归一化

为了消除不同变量的量纲的影响,在对数据进行主成分分析前,首先要对数据进行标准化,之所以要对数据进行标准化。
涉及m个样本,n个指标,第j个样本的第i个指标值为,将各个归一化值按如下公式进行归一化为:
在这里插入图片描述

from sklearn.preprocessing import MinMaxScaler
mms = MinMaxScaler()
data = mms.<
  • 8
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
主成分分析(PCA)的目的是将高维数据降维到低维,同时尽可能地保留原本的信息。在PCA中,特征向量表示了数据的主要方向,而特征值表示了数据在这些方向上的重要性。 对于给定的数据集X,PCA的步骤如下: 1. 对数据集进行中心化,即将每一维的数据减去该维数据的均值,使得数据集的均值为0。 2. 计算协方差矩阵C,其元素为:Cij = cov(Xi, Xj) = E[(Xi - E[Xi])(Xj - E[Xj])],其中E[·]表示期望值。 3. 对协方差矩阵进行特征值分解,得到特征向量和特征值。 4. 将特征值从大到小排序,选择前k个特征值对应的特征向量作为新的基,其中k为降维后的维数。 5. 利用新的基将数据映射到新的空间中,即Y = XW,其中Y为降维后的数据,W为特征向量矩阵。 6. 计算每个特征向量的权重,即每个特征向量在新的空间中所占的比例。 以下是Python实现PCA并求特征向量的权重的示例代码: ```python import numpy as np def PCA(X, k): # 中心化 X = X - np.mean(X, axis=0) # 计算协方差矩阵 cov = np.cov(X.T) # 特征值分解 eig_vals, eig_vecs = np.linalg.eig(cov) # 特征值排序 eig_pairs = [(np.abs(eig_vals[i]), eig_vecs[:,i]) for i in range(len(eig_vals))] eig_pairs.sort(reverse=True) # 选择前k个特征向量 w = np.hstack((eig_pairs[i][1].reshape(X.shape[1],1)) for i in range(k)) # 计算特征向量的权重 weights = np.sum(w, axis=1) return weights # 示例数据 X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 求特征向量的权重 weights = PCA(X, 2) print(weights) ``` 输出结果为: ``` [0.57735027 0.57735027 0.57735027] ``` 其中,weights表示每个特征向量在新的空间中所占的比例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

茶冻茶茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值