本文从阐述Python实现客观赋权法的四种方式:

Python实现客观赋权法,在进行赋权前,先导入数据(列:各维属性;行:各样本),并自行进行去空值、归一化等操作。

importpandas as pdimportnumpy as np

data=pd.DataFrame(pd.read_excel('路径'))

一. 熵权法

若某个指标的信息熵越大(即离散程度越大),表明指标提供的信息量越多,在综合评价中所能起到的作用也越大,权重也就越大。

m,n=data.shape

data=data.as_matrix(columns=None)

pij=data/data.sum(axis=0)

test=pij*np.log(pij)

test=np.nan_to_num(test)

ej=-1/np.log(m)*(test.sum(axis=0))

wi=(1-ej)/np.sum(1-ej)print(wi)

二. 因子分析权数法(FAM)

因子分析的目的:用少数几个因子去描述许多指标和因素间的联系,因子不具备直接物理含义。

因子分析权数法:对每个指标,计算共性因子的累计贡献率来定权。

from math import *

importnumpy.linalg as nlg

data_mean=data.mean()#样本均值

E = np.mat(np.zeros((12, 12)))#样本离差阵,12是因为我输入的是12维属性

for i inrange(len(data)):

E+= (data.iloc[i, :].values.reshape(12, 1) - data_mean.values.reshape(12, 1)) * (data.iloc[i, :].values.reshape(1, 12) - data_mean.values.reshape(1, 12))

R= np.mat(np.zeros((12, 12)))#样本相关阵R

for i in range(12):for j in range(12):

R[i, j]= E[i, j]/sqrt(E[i, i] *E[j, j])

eig_value, eigvector= nlg.eig(R)#求矩阵R的全部特征值,构成向量E。

eig =pd.DataFrame()

eig['names'] =data.columns

eig['eig_value'] =eig_value

eig.sort_values('eig_value', ascending=False, inplace=True)

createVar=locals()

result=0#求因子模型的因子载荷阵,寻找公共因子个数m

for m in range(1, 12):

createVar['factor_'+str(m)]=eig['eig_value'][:m].sum()/eig['eig_value'].sum()-result#这步计算每个因子的贡献率

result=eig['eig_value'][:m].sum()/eig['eig_value'].sum()if eig['eig_value'][:m].sum()/eig['eig_value'].sum() >= 0.8:#认为贡献率之和>80%的前m个重要因子,可以描述指标

print(m)#这里我得到的是7,所以之后算因子载荷矩阵有七列

breakeig_value=eig_value.reshape(12, 1)#因子载荷矩阵

A = np.mat(np.zeros((12, 7)))

A[:,0]=factor_1*abs((sqrt(eig_value[0])*eigvector[:,0]).reshape(12, 1))

A[:,1]=factor_2*abs((sqrt(eig_value[1])*eigvector[:,1]).reshape(12, 1))

A[:,2]=factor_3*abs((sqrt(eig_value[2])*eigvector[:,2]).reshape(12, 1))

A[:,3]=factor_4*abs((sqrt(eig_value[3])*eigvector[:,3]).reshape(12, 1))

A[:,4]=factor_5*abs((sqrt(eig_value[4])*eigvector[:,4]).reshape(12, 1))

A[:,5]=factor_6*abs((sqrt(eig_value[5])*eigvector[:,5]).reshape(12, 1))

A[:,6]=factor_7*abs((sqrt(eig_value[6])*eigvector[:,6]).reshape(12, 1))

a=pd.DataFrame(A)

b=a.sum(axis=1)

c=b/b.sum(axis=0)print(c)

三. 主成分分析权数法(PCA)

与因子分析法的主要区别在于:主成分由原有特征线性加权得到,而因子分析法中,因子线性加权得到原有特征。

指标权重为主成分的方差贡献率。

from sklearn.decomposition importPCA

X=np.array(data)

pca=PCA(n_components=5)

pca.fit(X)

component=pca.components_

variance_ratio=pca.explained_variance_ratio_

component=abs(component.T)for i in range(0,5):

component[:,i]=variance_ratio[i]*component[:,i]

a=pd.DataFrame(component)

b=a.sum(axis=1)

c=b/b.sum(axis=0)print(c)

四. 独立性权系数法

若指标与其他指标的复相关系数越大,则与其他指标的共线性关系越强,重复信息越多,所以指标权重越小。也即独立性越强,指标权重越大。

复相关系数是其中一项和其他项的加权和的相关系数,所以这里需要用到多元线性回归,我是用excel做的回归(网上很容易查到步骤),得到了复相关系数R1—R12,之后:

createVar =locals()

sum_result=0for i in range(1,13):

createVar['R'+str(i)]=1/createVar['R'+str(i)]

sum_result=sum_result+createVar['R'+str(i)]for i in range(1,13):

createVar['R'+str(i)]=createVar['R'+str(i)]/sum_resultprint(createVar['R'+str(i)])

参考文章:

https://blog.csdn.net/weixin_37805505/article/details/80847800

嫡权法赋权法_Python实现客观赋权法相关推荐

  1. 坎蒂雷赋权法 matlab,综合评价系统中客观赋权方法.doc

    综合评价系统中客观赋权方法 综合评价系统中客观赋权方法 提要客观赋权方法是从原始数据出发,从样本中提取信息,相较于主观赋权方法得到的权数的偏差更小一些,更能反映众多评价指标真实的重要程度.本文通过比较 ...

  2. 嫡权法赋权法_变异系数法_客观赋权法

    什么是变异系数,有何优势? 变异系数:当需要比较两组数据离散程度大小的时候,如果两组数据的测量尺度相差太大,或者数据量纲的不同,直接使用标准差来进行比较不合适,此时就应当消除测量尺度和量纲的影响,而变 ...

  3. 权重设计:客观赋权法的说明(熵权法/变异系数法/CRCIII法/TOPSIS法)

    在数据分析中,我们经常会遇到多个特征对于结果造成不同影响的情况,如何识别这些特征各自的权重,对我们的后续结果评估,打分矩阵构建都具有重要意义.我们所说的赋权法是用于解决多指标综合评价问题中的各指标权重 ...

  4. 客观赋权法的python实现

    这两天实现了一些客观赋权法,这里做一个整理.在进行赋权前,先导入数据(列:各维属性:行:各样本),并自行进行去空值.归一化等操作. import pandas as pd import numpy a ...

  5. 客观赋权法——变异系数法

    一.变异系数法的概念 变异系数法是根据统计学方法计算得出系统各指标变化程度的方法,是一种客观赋权法. 根据该方法变化差异较大的指标权重较大,变化差异较小的指标权重较小,从而根据指标的统计学规律确定其重 ...

  6. 最常用的客观赋权方法——熵权法

    我们的征途是星辰大海,而并非烟尘人间. 文章目录 一.熵权法的原理 1.1 信息熵 1.2 熵权法 二.熵权法的主要步骤 2.1 数据标准化 2.2 求各指标在各方案下的比值 2.3 求各指标的信息熵 ...

  7. 三种客观赋权法——熵权法、变异系数法、CRITIC

    1.数据处理 在计算权值之前,需要对原始的数据进行一定的处理. 1.1 数据清洗 数据的清洗是解决问题的第一步,包括缺失值处理和异常值处理两方面. 对于缺失值,通常有三种可选的操作--删除.插补.不处 ...

  8. 客观赋权法——CRITIC权重法【Python实现】

    理论部分不介绍,可以看之前的文章 客观赋权法--CRITIC权重法 Python实现是用jupyter做的,做得比较糙,直接截图了,有需要jupyter文件的可以私信. 注:数据乱造的,看过程就行

  9. 客观赋权法——CRITIC权重法

    一.概念 CRITIC法是一种比熵权法和标准离差法更好的客观赋权法. 它是基于评价指标的对比强度和指标之间的冲突性来综合衡量指标的客观权重.考虑指标变异性大小的同时兼顾指标之间的相关性,并非数字越大就 ...

  10. 【综合评价方法 变异系数权重法】指标权重确定方法之变异系数权重法

    变异系数法是直接利用各项指标所包含的信息,通过计算得到指标的权重.是一种客观赋权的方法.此方法的基本做法是:在评价指标体系中,指标取值差异越大的指标,也就是越难以实现的指标,这样的指标更难反映被评价单 ...

最新文章

  1. yum安装nginx
  2. [自动化]Puppet服务安装和部署
  3. yum 更新_CentOS7 - 使用yum-cron自动更新软件
  4. spring security默认登录页面登录用户,和自定义数据源
  5. 利用Arthas排查NoSuchMethodError
  6. Juypter 打开其他路径文件
  7. Nginx高可用实战
  8. vs2015 动态链接库问题
  9. java详细教程_java超详细教程适合初学者深入掌握Java知识.ppt
  10. 面经手册 · 第16篇《码农会锁,ReentrantLock之公平锁讲解和实现》
  11. matlab 不显示图中的x,y轴
  12. 解决:在ubuntu下安装R语言ks包时的error:configuration failed for package ‘rgl’
  13. 计算机word怎么录制宏,Word 2013中录制宏的方法
  14. Android内存优化深入解析
  15. bazel 链接第三方动态库_谷歌携手OPPO共同开发CameraX技术,第三方拍照应用有福了...
  16. Java多线程篇--concurrentHashMap
  17. ultron,奥创,ultron官网,奥创官网,奥创中国区官网,ultron中国区官网,奥创公链,ultron公链,ulx,ultron奥创,海洋renhe333333
  18. React学习七(React Hooks)
  19. QT学习之②信号与槽,以及链接实现方法
  20. 电商再赶“穿戴设备潮”易迅网推出智能手环

热门文章

  1. 酒精需要存放在防爆柜中吗?
  2. EMBA必看书籍推荐
  3. JDK.attach 包解析
  4. 魔改一波合成大西瓜!代码已开源~
  5. <C++>我用煮粽子的时间拿捏了类和对象中友元的全部形式
  6. VBS word/excel 转 PDF
  7. java 事件冷却,基于“牛顿冷却定律”的机器学习算法
  8. 天梯图excl_Excel版CPU天梯图 方便打印.xls
  9. Vue Cli3 模拟后台json接口
  10. 显示前半内容后半内容用省略号_省略号前后的标点用法