嫡权法赋权法_Python实现客观赋权法

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

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

import pandas as pd

import numpy 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 *

import numpy.linalg as nlg

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

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

for i in range(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的全

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值