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

【综合评价方法 变异系数权重法】指标权重确定方法之变异系数权重法变异系数法是直接利用各项指标所包含的信息,通过计算得到指标的权重。是一种客观赋权的方法。此方法的基本做法是:在评价指标体系中,指标取值差异越大的指标,也就是越难以实现的指标,这样的指标更难反映被评价单位的差距。由于评价指标体系中的各项指标的量纲不同,不宜直接比较其差别程度。为了消除各项评价指标的量纲不同的影响,需要用各项指标的变异系数来衡量各项指标取值的差异程度。各项指标的变异系数公式如下:…

大家好,又见面了,我是你们的朋友全栈君。

变异系数法是直接利用各项指标所包含的信息,通过计算得到指标的权重。是一种客观赋权的方法。此方法的基本做法是:在评价指标体系中,指标取值差异越大的指标,也就是越难以实现的指标,这样的指标更难反映被评价单位的差距。
由于评价指标体系中的各项指标的量纲不同,不宜直接比较其差别程度。为了消除各项评价指标的量纲不同的影响,需要用各项指标的变异系数来衡量各项指标取值的差异程度。各项指标的变异系数公式如下:

这里写图片描述

这里写图片描述

算法步骤总结:
1、先计算每个指标的所有平均值,标准差
2、然后计算每个指标的变异系数。
3、然后计算每个指标的权重。
4、然后计算每个部落的总分。
5、然后对总分进行max-min归一化。
6、然后将总分值映射成0-100之间的分数作为部落的热度值。
7、然后对所有热度值从大到小排序。

变异系数确定权重源代码实现:

# -*- 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_train_data.mean(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*100 for 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'])


    data=pd.read_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数据
    result.to_csv('C:\\Users\\xiaohu\\Desktop\\文本挖掘\\部落的热度算法\\result.csv', index=False)









版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/135567.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 几种常见卷积神经网络结构

    几种常见卷积神经网络结构卷积神经网络图像特征的提取与分类一直是计算机视觉领域的一个基础而重要的研究方向。卷积神经网络(ConvolutionalNeuralNetwork,CNN)提供了一种端到端的学习模型,模型中的参数可以通过传统的梯度下降方法进行训练,经过训练的卷积神经网络能够学习到图像中的特征,并且完成对图像特征的提取和分类。作为神经网络领域的一个重要研究分支,卷积神经网络的特点在于其每一层的特征都由上一层的局部区域通过共享权值的卷积核激励得到。这一特点使得卷积神经网络相比于其他神经网络方法更适合应用于图像特征的.

    2022年6月16日
    20
  • sql语言总结合集

    sql语言总结合集

    2021年10月2日
    42
  • 使用USB转485编程电缆连接西门子 S7-200的软件配置方法以及可能出现的问题[通俗易懂]

    使用USB转485编程电缆连接西门子 S7-200的软件配置方法以及可能出现的问题[通俗易懂]1安装驱动与PC-PPI编程电缆不同,USB转485编程电缆通常需要驱动。驱动安装完成后,将电缆插入电脑USB口,打开电脑设备管理器,观察端口COM是否生成。未插入编程线缆之前不存在COM3。2配置编程软件打开编程软件,点击【设置PG/PC接口】,选择【PC/PPIcable(PPI)】接口:点击属性,注意在【PPI】栏中不能勾选【高级PPI】和【多主站网络】:在【本地连接】中选择与设备管理器中一致的端口,此处为COM3:点击确定退出,软件配置完成,PC与PLC连接成功。.

    2022年5月18日
    152
  • Delphi考虑sql注入 QuotedStr

    Delphi考虑sql注入 QuotedStr之前只在BS架构的项目中考虑了Sql注入问题,却很少考虑到用了多年的Delphi项目也应该考虑Sql注入的问题,今天做了个实验,成功完成注入,把表里数据全部删除,以后再做Delphi项目还真的考虑这个问题。总体讲,大体知道有两种方式可以避免Delphi中的Sql注入:1、用QuotedStr替代”’进行字符串拼接;2、采用传参数的方式与数据库交互,这种方式哪天再仔细体验一下。 以下为一个小测试,…

    2022年10月18日
    0
  • Java8 Stream使用flatMap合并List

    Java8 Stream使用flatMap合并List之前也写过很多篇关于Java8使用的文章了,但是回顾一下,好像还没介绍过Java8Stream的flatMap操作,昨天刚好在工作中遇到一个场景,发现flatMap简直太方便了,这里总结一下flatMap的常规使用。附带讲一下,使用Java8实现集合的并、交、差操作,其实之前也讲过一种使用Guava的实现方式,具体请参考Guava集合工具 flatMap 首先看一下一种场景,存在一个M…

    2022年6月4日
    94
  • export添加环境变量不生效_如何添加环境变量里面的路径

    export添加环境变量不生效_如何添加环境变量里面的路径export命令功能说明:设置或显示环境变量。语  法:export[-fnp][变量名称]=[变量设置值]补充说明:在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该此登陆操作。参  数:   -f 代表[变量名称]中为函数名称。 -n 删除指定的变量。变量实际上…

    2022年9月6日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号