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

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

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

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

这里写图片描述

这里写图片描述

算法步骤总结:
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)









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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Java快排实现(java快速排序代码)

    快速排序:基本实现思路取一个标准位置的数字用其他位置的数字和标准数进行对比如果比标准数大则放到标准数的右边,如果比标准数小则放到标准数的左边然后使用递归进行持续比对(注意:递归要有入口如果当前数组有数据并且多个才进行排序),然后我们用代码实现packagesort;importjava.util.Arrays;/***Created…

  • 五大创意礼品网站_实用礼品

    五大创意礼品网站_实用礼品朋友、父母过生,经常苦于不知道送啥好,送一般的显得没有新意,想送个有创意的吧,又不知道到哪选。为此,小编我特意调研了国内的创意礼品网站,给出前十位的网站,供大家参考。礼意久久送礼网:www.liyi99.com  成立于09年的礼意久久送礼网是目前国内领先的在线礼品销售网站,礼品门类齐全,有自己的呼叫中心,同时也接受过央视的采访。  优点:礼品种类齐全,同时全国免运费;…

    2022年10月24日
  • java jsonstring变成jsonobject(jpa实体类)

    本文的JsoonObject是fastJSON提供的对象JSONObject所需的maven依赖:<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.69</version></dependency>先定义一个实体类: @Data@ToS

  • 百度快照更新方法「建议收藏」

    百度快照更新方法「建议收藏」大家在建站过程中,可能都会遇到百度快照不更新的问题。我也不例外,帮朋友维护的一网站(QQ空间留言代码)百度快照时间停在了3月1号,一直到7号也没更新,而同类网站的百度快照几乎天天更新。我这里说的是百度快照不更新,但网站的关键字排名却没有发生变化。分析原因。这个网站(www.xkyy18.cn)也没有作弊的地方,有的只是适当的优化;在1号当天网站首页增加了一个信息小版块,链接增加了28个,然后

  • 逻辑回归原理_逻辑回归分析

    逻辑回归原理_逻辑回归分析逻辑回归原理

  • iservice list方法_MyBatis-Plus IService<T> 方法汇总[通俗易懂]

    一、IService使用1.getOne(),这个是方法返回结果不止一条则会抛出异常,如果想默认取第一条结果,可以给这方法传第二个参数为false。@TestpublicvoidgetOne(){Userone=userService.getOne(Wrappers.lambdaQuery().eq(User::getAge,31),false);System.out.println…

发表回复

您的电子邮箱地址不会被公开。

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