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

【综合评价⽅法变异系数权重法】指标权重确定⽅法之变异系数权重法
变异系数法是直接利⽤各项指标所包含的信息,通过计算得到指标的权重。是⼀种客观赋权的⽅法。此⽅法的基本做法是:在评价指标体系中,指标取值差异越⼤的指标,也就是越难以实现的指标,这样的指标更难反映被评价单位的差距。
由于评价指标体系中的各项指标的量纲不同,不宜直接⽐较其差别程度。为了消除各项评价指标的量纲不同的影响,需要⽤各项指标的变异系数来衡量各项指标取值的差异程度。各项指标的变异系数公式如下:
算法步骤总结:
1、先计算每个指标的所有平均值,标准差
2、然后计算每个指标的变异系数。
3、然后计算每个指标的权重。
4、然后计算每个部落的总分。
5、然后对总分进⾏max-min归⼀化。
6、然后将总分值映射成0-100之间的分数作为部落的热度值。
2012金瓶梅
7、然后对所有热度值从⼤到⼩排序。
变异系数确定权重源代码实现:
# -*- encoding=utf-8 -*-
# -*- encoding=utf-8 -*-
import pandas as pd
import numpy as np
# ⾃定义归⼀化函数
def autoNorm(data):
"""
:param data: 列表
:return: 归⼀化列表
"""
arr = np.asarray(data)
norm_list=[]
for x in arr:
x = round(float(x - np.min(arr)) / ((np.max(arr) - np.min(arr))+0.001),4)        norm_list.append(x)
加权return norm_list
# ⾃定义热度值计算函数
def get_hot_value(context_train_data):
"""
亡命刺客
天下名站:param context_train_data:数据框
:return: 热度值分数
"""
#  求相关列均值与标准差
向日葵之歌context_train_mean = context_an(axis=0)
context_train_std = context_train_data.std(ddof=0)
#  求变异系数
context_train_cof_var = context_train_std/context_train_mean
#  对变异系数求和
sum_context_train_cof_var = context_train_cof_var.sum()
#  得出权重
context_train_wi = context_train_cof_var/sum_context_train_cof_var
#  将权重转换为矩阵
cof_var = np.mat(context_train_wi)
#  将数据框转换为矩阵
context_train_data = np.mat(context_train_data)
#  权重跟⾃变量相乘
last_hot_matrix = context_train_data * cof_var.T
last_hot_matrix = pd.DataFrame(last_hot_matrix.T)
#  累加求和得到总分
last_hot_score =list(last_hot_matrix.apply(sum))
#  max-min 归⼀化
last_hot_score_autoNorm=autoNorm(last_hot_score)
#  部落的热度值映射成分数(0-100分)
last_hot_score_result=[i*100for i in last_hot_score_autoNorm]
return last_hot_score_result
if __name__ == '__main__':
# 读取数据
# context_train_data=pd.DataFrame(np.arange(24).reshape(4,6),columns=['x1','x2','x3','x4','x5','x6'])    ad_excel('C:\\Users\\xiaohu\\Desktop\\⽂本挖掘\\部落的热度算法\\data.xlsx')
# 拿出所有⾃变量数据(不包含部落id,部落名称)
context_train_data=data.iloc[:,2:16]
print(context_train_data)周荣汉
# 调⽤热度值计算函数
last_hot_score_result =get_hot_value(context_train_data)
# 增加⼀列部落名
context_train_data['tribe_name']=data['tribe_name']
# 增加⼀列热度值
context_train_data['tribe_hot_value']=last_hot_score_result
# 然后对数据框按热度值从⼤到⼩排序
result=context_train_data.sort_values(by = 'tribe_hot_value',axis = 0,ascending = False)
result['rank']=range(1,len(result)+1)
print(result)
# 输出excel
# 写出csv数据
<_csv('C:\\Users\\xiaohu\\Desktop\\⽂本挖掘\\部落的热度算法\\result.csv', index=False)

本文发布于:2024-09-24 23:20:11,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/367113.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:指标   部落   权重
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议