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

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

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

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

这里写图片描述

这里写图片描述

算法步骤总结:
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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 优秀的程序员该如何更上一层楼

    优秀的程序员该如何更上一层楼

    2022年3月5日
    45
  • 分布式锁的实现和应用场景_predis分布式锁的应用

    分布式锁的实现和应用场景_predis分布式锁的应用文章目录如何理解分布式锁分布式锁的常用实现基于关系型数据库存在单点故障风险不可重入无法实现阻塞应用Redis缓存基于ZooKeeper实现电商网站都会遇到秒杀、特价之类的活动,大促活动有一个共同特点就是访问量激增,在高并发下会出现成千上万人抢购一个商品的场景。虽然在系统设计时会通过限流、异步、排队等方式优化,但整体的并发还是平时的数倍以上,参加活动的商品一般都是限量库存,如何防止库存超卖,避免并发问题呢?分布式锁就是一个解决方案。如何理解分布式锁我们都知道,在业务开发中,为了保证在多线程下处理

    2025年10月3日
    3
  • 使用LinkedHashMap实现LRU算法

    使用LinkedHashMap实现LRU算法

    2021年4月10日
    122
  • 计算机设计大赛作品开发文档[通俗易懂]

    计算机设计大赛作品开发文档[通俗易懂]参加的是2020年的计算机设计大赛,软件应用与开发赛道。我们的开发文档仅供参考。可以去我的资源下载:计算机设计大赛作品开发文档目录第一章需求分析 31.1开发背景 31.2市场分析 31.2.1目标用户 31.2.2竞品分析 31.3作品简介 41.3.1主要功能 41.3.2优势和创新点 4第二章概要设计 52.1总体设计 52.2技术框架 52.2.1前端 52.2.2后端 62.3模块设计 6第三章详细设计 83.1界面设计 83.2数据库设

    2022年7月16日
    15
  • pip命令使用详解「建议收藏」

    pip命令使用详解「建议收藏」pip很像CentOS系统中的yum命令,用于安装及维护Python包。pip的安装windows其实在windows下是默认安装了pip工具的,只是没有将其所在目录加入Path,导致命令查找不到。将python安装目录下的scripts目录加入环境变量Path中即可。Linux执行下面命令即可完成安装#wgethttps://bootstrap.pyp…

    2022年5月28日
    38
  • node版本如何升级

    node版本如何升级YouareusingNodev8.4.0,butthisversionofvue-clirequiresNode>=8.9.PleaseupgradeyourNodeversion.然后再用node-v,发现在本地的node版本是v8.4.0,有点老了,要升级了。可是,node怎么升级呢?有点慌…

    2022年7月16日
    34

发表回复

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

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