首页 > 编程知识 正文

变异系数cv值的算法(多样性指数计算公式)

时间:2023-05-03 21:13:23 阅读:68097 作者:866

文章的目的往往需要评估一些企业、部门、甚至一个城市,但一个指标不能完全反映这些复杂的单元,因此经常用很多指标进行评估。 这些指标的单位不统一,大小顺序可能相差很大,综合评价的本质是将这些复杂指标最终合并为一个指数。 综合评价的方法有很多,主要有主观综合评价、客观综合评价、主观客观混合评价三种。 本文主要论述了客观综合平台中的变异系数法。 这篇文章有两个目标

确定各指标权重的多个单元的排名(竞争力排名、大学排名、发展水平、幸福排名、税负排名等)变动系数法的计算过程

每个城市的评估都留下了10个指标。 首先,要知道哪个指标是最重要的。 一个人身上有很多伤口,有刀伤、钝器伤、拳头痕。 到底哪个是最致命的! 这种重要性的差异叫做权重。 因此,第一件事是决定10个指标的权重分别是多少。 原理在这里不谈,只说计算过程吧。

导入数据并进行初步处理的第importmatplotlib.pyplotasplt #1- 3行代码是读取数据时,Python中不会出现中文乱码的PLT.rcparams [ ' font.sarams ] PLT.rcparams [ ' axes.unicode _ MINUS ' ]第4-5行中的代码是两个数据分析的著名库,也被称为工具。 importnumpyasnpfromxlwtimport * #这是将最后一个数据结果写入excel的库data=PD.read _ excel (d : ((5. python airports.xls )指定的位置Pd是pandas的简称,该工具将excel的数据导入python中,形成一个称为dataframe的表。 通常的路径是airports.xls (d 33605 ),但由于python容易发生冲突,因此将“”排列为“\”. excel中的表,如下所述。 观察print(data ) #导入的数据表,以便这种格式的数据可以导入计算。 导入后, city GDP :亿元人口(万)…进出口总额(亿元)旅客吞吐量(万人)货物邮政吞吐量(万吨) 0广州21503.151449.84…9714.366583.69233.85001深圳22438.84 1.10921.683.74003佛山9549.60765.67. 4358.244929.00.02424惠州3830.58477.70.3419.77795.69.400000005香港2.4000040004 [这里共有10个指标,但只显示了5个。 中间的五个将被.号替换(https://img-blog.csdn img.cn/20200725202418189.png? x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text _ a hr0 CHM6ly9ibg9nlmnzzg 4u bmv0L3 dlara 代码为以下Deldata[list(data ) ]#第一列为城市,不参加求平均值、标准偏差、变异系数的过程,请先删除

是打印(数据)

结果以下GDP :亿元人口(万)城镇化率)…进出口总额)亿元)旅客吞吐量)万吨) 021503.151449.8486.14…9714.366583.69233.151486

122438.391252.83100.00…28075.3318142.24115.9000

22564.73176.5489.37…3001.10921.683.7400

39549.60765.6794.00…4358.244929.00.0242

43830.58477.7068.15…3419.7795.690.4000

522160.67741.31100.00…71642.325665.50493.8000

63406.5565.31100.00…736.42716.003.7000

数据归一化。观察这1

0个指标,第一个是GDP,单位是亿元,广州GDP数字是吓人的21503亿,是合适的鸭子财富的10倍多,这是比较大的,最小的是城镇化率,同样是广州,是86.14%,也就是0.8614,和GDP相比完全是小蚂蚁,可以忽略不计,但是能忽略不,回答是不能!为了规避这种数量级的影响,我们要把数据全部化成一个0-1之间的数,这样比较才公平。这就是归一化,归一化的手段很多,常用的是简单归一化和标准化归一化,而标准化归一化适用于那些样本数据很大的,和本文不相匹配,没有最好,适合的就是最好的。公示很简单
我们任意取一个城市的GDP,看其归一值怎么求,这几个城市里面我呆过比较时间长的是广州,但我更喜欢珠海,一个176.54万人口的美丽滨海城市,有大大小小100多个岛屿,我很喜欢东奥岛,回归正题,我们就计算珠海GDP的归一值吧
公式:
珠海的GDP归一值=(珠海的GDP-7个城市GDP的最小值)/(7个城市GDP的最大值-7个城市GDP的最小值)=(珠海的GDP-7个城市GDP的最小值)/(7个城市GDP的最大值-7个城市GDP的最小值),很尴尬的是,珠海的GDP就是7个城市中的最小值,所以其归一值为0!
通过这样的算法,把7*10个数据全部化成0-1之间的值,代码如下:

# 假设上面有一个DataFrame叫做data大意的小蘑菇 = (data-data.min())/(data.max()-data.min()) # 即实现简单标准化归一print(大意的小蘑菇) # 归一之后的表格,大意的小蘑菇是归一化的中文缩写 GDP:亿元 人口(万) 城镇化率(%) ... 进出口总值(亿元) 旅客吞吐量(万人次) 货邮吞吐量(万吨)

0 0.952941 1.000000 0.564835 … 0.126618 0.359515
1 1.000000 0.857706 1.000000 … 0.385566 1.000000
2 0.000000 0.080338 0.666248 … 0.031939 0.045770
3 0.351464 0.505847 0.811617 … 0.051079 0.267825
4 0.063695 0.297856 0.000000 … 0.037844 0.000000
5 0.986026 0.488252 1.000000 … 1.000000 0.308636
6 0.042359 0.000000 1.000000 … 0.000000 0.034373
为了显示好看更好说明问题,把最后一列的归一化值省略了!

求每个指标的平均值与标准差

例如GDP归一化之后7个城市的平均值,代码

# 求相关列均值与标准差大意的小蘑菇LJZ = 大意的小蘑菇.mean(axis=0) # axis=0,求各列的均值;axis=1,求各行的均值# print(大意的小蘑菇LJZ)大意的小蘑菇lBZC = 大意的小蘑菇.std(ddof=0) # ddof=0求标准差时除以n,如果是ddof=1时除以n-1# print(大意的小蘑菇BZC) 求每个指标的变异系数,求10个指标变异系数的和 # 求变异系数大意的小蘑菇lBYXS = 大意的小蘑菇lBZC/大意的小蘑菇LJZ # 变异系数=标准差/平均值# print(大意的小蘑菇LBYXS) # 对变异系数求和大意的小蘑菇LBYXSDH = 大意的小蘑菇lBYXS.sum()# print(大意的小蘑菇LBYXSDH) 求每个指标的权重 # 得出权重QZ = 大意的小蘑菇lBYXS/大意的小蘑菇LBYXSDH # 用变异系数除以所有变异系数之和得出权重矩阵print(QZ)

到此为止,我们已经完成了任务目标1:求每个指标的权重,从中发现谁对城市的竞争力或发展水平影响最大。请看结果。
GDP:亿元 0.092432
人口(万) 0.076098
城镇化率(%) 0.047389
失业人员(万) 0.118713
财政收入(亿元) 0.106368
固定资产投资(亿元) 0.059396
社会消费品零售总额(亿元) 0.095863
进出口总值(亿元) 0.146315
旅客吞吐量(万人次) 0.113138
货邮吞吐量(万吨) 0.144289
结果在我们意料之中,也感觉有点意外,影响最大的是进出口总值,权重是10个指标中最大的0.146315,意外的是排第二、第三、第四的是货邮吞吐量、失业人口、旅客吞吐量,如果是本科生文章,写到已经是一篇很好的文章,你找到了影响一个城市最重要的因素,也就是你有了努力的方向,然后把这些方向的优缺点摆出来,然后总结出几个可以行的通的政策建议,妥妥的一篇好文章。

计算城市的排名

权重已经找出来了,但是城市的排名还是没有出来,革命还未成功,同志还需努力!!!
如何计算排名,首先要我们要把归一化后表大意的小蘑菇中的值和刚刚求得的权重相乘,大意的小蘑菇是一个7行10列的表格,QZ是一个1行10列的表格,所以这两个相乘首先要把他们两个都转化成矩阵,然后大意的小蘑菇和QZ转置矩阵相乘,得到一个7行1列的表格,实际就是7个城市分别得到一个值。

# 将权重(QZ表格)转换为矩阵QZJZ = np.mat(QZ) # 因为涉及到两个dataframe的值相乘,需要先转化为矩阵,首先把权重转化为矩阵print(QZJZ)# 将大意的小蘑菇表格转换为矩阵大意的小蘑菇JZ = np.mat(大意的小蘑菇) # 把归一化后的数据转化为矩阵# print(大意的小蘑菇JZ)# 归一化矩阵乘以转置的权重矩阵得到一个7行1列的矩阵NZHPFJZ = 大意的小蘑菇JZ * QZJZ.T # 矩阵相乘,要注意第一个矩阵的列和第二个矩阵的行必须一致,.T代表矩阵的转置NZHPF = pd.DataFrame(NZHPFJZ.T) # 把相乘后的矩阵转化为dataframe# print(NZHPF) 计算每个城市的得分

每个城市已经计算出来一个数字,为了更好的比较,还要归一化一次。因为现在只有一列,归一化比较容易计算。

# 累加每个城市的得分求和得到总分NZHPFZH = list(NZHPF.apply(sum))# print(NZHPFZH)# max-min依然简单 归一化(如果要研究城市竞争力和另一个变量之间的关系,数据算到归一化之前就OK,如何只研究城市竞争力本身的排名,要继续归一化NZHPFZH = pd.DataFrame(NZHPFZH) # 把矩阵变成dataframe表格,矩阵不能归一化ZHPF大意的小蘑菇 = (NZHPFZH-NZHPFZH.min())/(NZHPFZH.max()-NZHPFZH.min())# print(ZHPF大意的小蘑菇)# 城市的热度值映射成分数(0-100分)result = ZHPF大意的小蘑菇*100print(result)

0 83.945155
1 100.000000
2 0.662802
3 23.996897
4 1.631386
5 92.625916
6 0.000000
按照这10个指标综合评价,广州得分最高100分,最低分是澳门,但是这是只是为介绍变异系数法进行综合评价,指标没有不全面,结果和现实有出入,主要学习这种计算方法。
总结:实际是一个傻瓜式的计算,你把收集的数据足够丰富、数据正确,格式正确,输入进去,就会把指标的权重和排名帮你计算出来。最后,把代码全部奉上。

# -*- encoding=utf-8 -*-# ==================================# 1、数据的归一化(可以最大最小归一,也可以标准化归一)import matplotlib.pyplot as pltimport pandas as pdimport numpy as npfrom xlwt import *plt.rcParams['font.sans-serif'] = ['microsoft YaHei']plt.rcParams['axes.unicode_minus'] = Falsedata = pd.read_excel('D:\5.python data\airports.xls') # 把指定位置的excel表格数据导入python形成一个dataframe表格数据print(data) # 观察导入的数据表格,如这种类型格式的数据才能导入计算del data[list(data)[0]] # 第一列是年份,不参加求均值、标准差、变异系数的过程,所以先删掉print(data)# 假设上面有一个DataFrame叫做data大意的小蘑菇 = (data-data.min())/(data.max()-data.min()) # 即实现简单标准化归一print(大意的小蘑菇) # 归一之后的表格# BZ大意的小蘑菇 = (data-data.mean())/(data.std()) # data.mean()是平均值、data.std()是标准差# 求相关列均值与标准差大意的小蘑菇LJZ = 大意的小蘑菇.mean(axis=0) # axis=0,求各列的均值;axis=1,求各行的均值# print(大意的小蘑菇LJZ)大意的小蘑菇lBZC = 大意的小蘑菇.std(ddof=0) # ddof=0求标准差时除以n,如果是ddof=1时除以n-1# print(大意的小蘑菇BZC)# 求变异系数大意的小蘑菇lBYXS = 大意的小蘑菇lBZC/大意的小蘑菇LJZ # 变异系数=标准差/平均值# print(大意的小蘑菇LBYXS)# 对变异系数求和大意的小蘑菇LBYXSDH = 大意的小蘑菇lBYXS.sum()# print(大意的小蘑菇LBYXSDH)# 得出权重QZ = 大意的小蘑菇lBYXS/大意的小蘑菇LBYXSDH # 用变异系数除以所有变异系数之和得出权重矩阵print(QZ)# 将权重(QZ表格)转换为矩阵QZJZ = np.mat(QZ) # 因为涉及到两个dataframe的值相乘,需要先转化为矩阵,首先把权重转化为矩阵print(QZJZ)# 将大意的小蘑菇表格转换为矩阵大意的小蘑菇JZ = np.mat(大意的小蘑菇) # 把归一化后的数据转化为矩阵# print(大意的小蘑菇JZ)# 权重矩阵乘以归一化矩阵NZHPFJZ = 大意的小蘑菇JZ * QZJZ.T # 矩阵相乘,要注意第一个矩阵的列和第二个矩阵的行必须一致,.T代表矩阵的转置NZHPF = pd.DataFrame(NZHPFJZ.T) # 把相乘后的矩阵转化为dataframe# print(NZHPF)# 累加求和得到总分NZHPFZH = list(NZHPF.apply(sum))# print(NZHPFZH)# max-min 归一化(如果要研究两个变量之间的关系,数据算到上一步就OK,如何研究数据本身的排名,继续NZHPFZH = pd.DataFrame(NZHPFZH)ZHPF大意的小蘑菇 = (NZHPFZH-NZHPFZH.min())/(NZHPFZH.max()-NZHPFZH.min())# print(ZHPF大意的小蘑菇)# 部落的热度值映射成分数(0-100分)# last_hot_score_result = [i * 100 for i in last_hot_score_autoNorm]# print(last_hot_score_result)result = ZHPF大意的小蘑菇*100print(result)# 数据保存进excel中QZ.to_csv('D:\5.python data\jzl.csv', index=False, header=False, mode='a') # index=False代表不要列头;header=False代表不要索引;mode='a'代表数据是追加写入不是覆盖# NZHPF.to_csv('D:\5.python data\jzl.csv', index=False, mode='a')result.to_csv('D:\5.python data\jzl.csv', index=False, header=False, mode='a')

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。