变异系数法之python

目录

1.简介

2.算法原理

2.1 指标正向化

2.2 数据标准化

2.3 计算变异系数

2.4 计算权重以及得分

3.实例分析

3.1 读取数据

3.2 指标正向化

3.3 查看行数和列数

3.4 数据标准化

3.5 计算变异系数

3.6 计算权重

3.7 计算得分 

完整代码 


1.简介

        变异系数法(Coefficient of variation method)又称"标准差率"(标准差与平均数的比值)是直接利用各项指标所包含的信息,通过计算得到指标的权重。是一种客观赋权的方法。此方法的基本做法是:在评价指标体系中,指标取值差异越大的指标,也就是越难以实现的指标,这样的指标更能反映被评价单位的差距。例如,在评价各个国家的经济发展状况时,选择人均国民生产总值(人均GNP)作为评价的标准指标之一,是因为人均GNP不仅能反映各个国家的经济发展水平,还能反映一个国家的现代化程度。如果各个国家的人均GNP没有多大的差别,则这个指标用来衡量现代化程度、经济发展水平就失去了意义。

2.算法原理

2.1 指标正向化

        和熵权法的指标正向化类似,正向指标越大越好,负向指标越小越好。把指标都转化成正向指标处理。此篇采用新的正向化形式,采用上一篇建模算法熵权法的处理形式也可,基本思想不变就行。这个数据集有正向指标(越大越优型指标)和负向指标(越小越优型指标)两种。

        设有m个待评对象,n个评价指标,可以构成数据矩阵X=(xij)m*n,设数据矩阵内元素,经过指标正向化处理过后的元素为xij'

负向指标:并网点电压偏差越限次数D、有功控制能力F、功率因数越限G属于此类指标

正向指标:其余所有指标属于此类,可以不用处理

2.2 数据标准化

        每个指标的数量级不一样,需要把它们化到同一个范围内比较。上一篇建模算法用到了最大最小值标准化方法。此篇可以用一个新的标准化方法,处理如下:

        设标准化后的数据矩阵元素为rij,由上可得指标正向化后数据矩阵元素为xij'

2.3 计算变异系数

处理过后可以构成数据矩阵R=(rij)m*n

  • 计算指标的均值:

  •  计算指标的标准差:

  •  计算变异系数:

2.4 计算权重以及得分

  • 权重为

  • 得分为

3.实例分析

风场名风场1风场2风场3
A(高频率穿越能力)0.7430.75670.8104
B(低频率穿越能力)0.82670.80330.7667
C(低压穿越能力)0.83240.87360.8539
D(并网点电压偏差越限次数 )121016
E(SVC/SVG响应性能指标)0.86370.85380.9038
F(有功控制能力)0.07430.06650.0881
G(功率因素越限)0.04090.07160.0657

3.1 读取数据

读取表中全部数据

#导入数据
data=pd.read_excel('D:\桌面\变异系数.xlsx')
print(data)

返回:

只读取表中数值

label_need=data.keys()[1:]
data1=data[label_need].values
print(data1)

返回:

 

3.2 指标正向化

#数据正向化处理
data2=data1
index=[3,5,6] #越小越优指标位置,注意python是从0开始计数,对应位置也要相应减1
k=0.1
for i in range(0,len(index)):data2[:,index[i]]=1/(k+max(abs(data1[:,index[i]]))+data1[:,index[i]])
print(data2)

返回:

3.3 查看行数和列数

#行数和列数
[m,n]=data1.shape
print(m,n)

返回:

 

3.4 数据标准化

#数据标准化
data3 = data2
for j in range(0,n):data3[:,j]=data2[:,j]/np.sqrt(sum(np.square(data2[:,j])))
print(data3)

返回:

3.5 计算变异系数

#计算变异系数
A=np.average(data3, axis=0) #计算均值
S=np.std(data3, axis=0) #计算标准差
V=S/A #计算变异系数
print('变异系数:',V)

返回:

3.6 计算权重

# 计算权重
w=V/sum(V)
print('权重:',w)

返回:

3.7 计算得分 

#计算得分
s=np.dot(data3,w)
Score=100*s/max(s)
for i in range(0,len(Score)):print(f"第{i+1}个风场百分制得分为:{Score[i]}")

返回:

完整代码 

#导入库
import pandas as pd
import numpy as np
#导入数据
data=pd.read_excel('D:\桌面\变异系数.xlsx')
# print(data)
label_need=data.keys()[1:]
data1=data[label_need].values
# print(data1)#数据正向化处理
data2=data1
index=[3,5,6] #越小越优指标位置,注意python是从0开始计数,对应位置也要相应减1
k=0.1
for i in range(0,len(index)):data2[:,index[i]]=1/(k+max(abs(data1[:,index[i]]))+data1[:,index[i]])
# print(data2)#行数和列数
[m,n]=data1.shape
# print(m,n)#数据标准化
data3 = data2
for j in range(0,n):data3[:,j]=data2[:,j]/np.sqrt(sum(np.square(data2[:,j])))
# print(data3)#计算变异系数
A=np.average(data3, axis=0) #计算均值
S=np.std(data3, axis=0) #计算标准差
V=S/A #计算变异系数
# print('变异系数:',V)# 计算权重
w=V/sum(V)
# print('权重:',w)#计算得分
s=np.dot(data3,w)
Score=100*s/max(s)
for i in range(0,len(Score)):print(f"第{i+1}个风场百分制得分为:{Score[i]}")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/564902.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电脑上怎么扫二维码_微信里别人发给我的二维码怎么扫

手机版:①打开微信打开聊天框;②点开二维码并长按二维码;③选择识别图中二维码即可。电脑版:①打开对话框点开二维码;②右击二维码选择识别图中二维码即可。

CRITIC法之matlab

目录 1.简介 2.原理解析 2.1 指标正向化及标准化 2.2 计算信息承载量 2.3 计算权重和评分 3.实例分析 3.1 读取数据 3.2 指标正向化及标准化 3.3 计算对比度 3.4 矛盾性 3.5 计算信息载量 3.6 计算权重 3.7 计算得分 完整代码 1.简介 CRITIC是Diakoulaki&#…

Java Object类详解

Object 是 Java 类库中的一个特殊类,也是所有类的父类。也就是说,Java 允许把任何类型的对象赋给 Object 类型的变量。当一个类被定义后,如果没有指定继承的父类,那么默认父类就是 Object 类。因此,以下两个类表示的含…

sql 成功率_备考2022年MBA: 如何提高清华、北大MBA提前面试成功率|博雅汇MBA

北大清华在国内可是著名高校,也是不少学子梦寐以求的院校,当然这也就早就竞争激烈的现状,无论是高考还是攻读MBA。那么在剧烈竞争压力下,我们怎么能提高被名校录取的几率呢,我今天从材料关和面试关为大家做一个详细的解…

CRITIC法之python

目录 1.简介 2.原理解析 2.1 指标正向化及标准化 2.2 计算信息承载量 2.3 计算权重和评分 3.实例分析 3.1 读取数据 3.2 指标正向化及标准化 3.3 计算对比度 3.4 矛盾性 3.5 计算信息载量 3.6 计算权重 3.7 计算得分 完整代码 1.简介 CRITIC是Diakoulaki&#…

Java Integer类详解

Integer 类在对象中包装了一个基本类型 int 的值。Integer 类对象包含一个 int 类型的字段。此外,该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法。 Integer 类的构造方…

层次分析法之matlab

目录 1.简介 2.算法解析 3.实例分析 3.1 构造矩阵 3.2 查看行数和列数 3.3 求特征向量 3.4 找到最大特征值和最大特征向量 3.5 计算权重 3.6 一致性检验 3.7 计算评分 完整代码 1.简介 一种主观赋权的方法,在数据集比较小,实在不好比较的时候…

css布局方式_收藏!40 个 CSS 布局技巧

简介:CSS是Web开发中不可或缺的一部分,随着Web技术的不断革新,CSS也变得更加强大。CSS的众多属性你知道了多少?具体开发中该使用什么属性才最适合恰当?如今的一些CSS属性可以让我们节约更多的时间。比如在Web布局中&am…

Java Float类详解

Float 类的构造方法 Float 类中的构造方法有以下 3 个。 Float(double value):构造一个新分配的 Float 对象,它表示转换为 float 类型的参数。Float(float value):构造一个新分配的 Float 对象,它表示基本的 float 参数。Float(S…

层次分析法之python

目录 1.简介 2.算法解析 3.实例分析 3.1 构造矩阵 3.2 查看行数和列数 3.3 求特征向量 3.4 找到最大特征值和最大特征向量 3.5 计算权重 3.6 一致性检验 3.7 计算评分 完整代码 1.简介 一种主观赋权的方法,在数据集比较小,实在不好比较的时候…

c++数字金字塔_“资金管理是投资最大的秘密”(超级干货),一生死记“金字塔加仓减仓法”,最安全稳健的操盘法方式!...

仓位控制不是精确的科学。它是保证资金安全、有效规避风险、长期稳定盈利的有效手段,有仓位控制意识和规则是股市交易者在心理和技术上成熟的表现之一,仓位控制是建立在市场和个股短期具有不可预测的特性、尊重市场、保证资金安全的基础上的。对于看好的…

Java Double类详解

Double 类的构造方法 Double 类中的构造方法有如下两个。 Double(double value):构造一个新分配的 Double 对象,它表示转换为 double 类型的参数。Double(String s):构造一个新分配的 Double 对象,它表示 String 参数所指示的 do…

matlab设置工作路径

目录 暂时修改路径 永久修改路径 暂时修改路径 a)直接在页面的路径框里粘贴想进的路径然后 回车 即可 b) 如果只是想暂时将文件夹加入路径,防止函数名字空间污染的话,可采用本方法:用MATLAB运行目标文件夹下任意一个m文件,MATL…

Java System类详解

System 类位于 java.lang 包,代表当前 Java 程序的运行平台,系统级的很多属性和控制方法都放置在该类的内部。由于该类的构造方法是 private 的,所以无法创建该类的对象,也就是无法实例化该类。 System 类提供了一些类变量和类方…

linux入门_linux入门-常用命令的使用

linux入门-常用命令的使用对于命令行的接触,最开始是window下的cmd,比如查看电脑ip地址、进入某一个文件夹、下载npm模块等等window cmdwindow ipconfig对于习惯了window桌面操作系统的用户来说,其实是比较少接触到命令行的,而在l…

MATLAB遇到问题:错误使用eval,未定义与‘struct‘类型的输入参数相对应的函数‘workspacefunc‘

安装好什么也没干,就开始报错,命令行窗口输入什么都是错误 错误使用eval 未定义与’struct’类型的输入参数相对应的函数’workspacefunc’ 解决方法: 在命令行窗口分别输入下面语句,箭头可不是哦,只有加粗部分是 &…

广西壮族自治区直流充电桩说明书下载_鄂州便携式直流充电桩

安徽能通新能源科技有限公司坐落在一座美丽宜居的城市中。在我国东部地区、长江下游、巢湖之滨,横贯连接京台高速、沪蓉高速、沪陕高速、合徐高速、京合高铁、合宁高铁、合福高铁、合武高铁、京九铁路、宁西铁路并与世界有名的自然和文化遗产—黄山风景区毗邻&#…

三大相关性分析之matlab

目录 1.简介 2.Pearson相关系数 算法详解 程序实现 3.Kendall相关系数 算法详解 程序实现 4.Spearman相关系数 算法详解 程序实现 1.简介 相关性分析是指对两个或多个具备相关性的变量元素进行分析,从而衡量两个变量因素的相关密切程度。相关性的元素之…

java反编译工具_Java开发必会的反编译知识(附支持对Lambda进行反编译的工具)...

我之前推送过Java代码的编译与反编译,其中简单的介绍了Java编译与反编译相关的知识,最近给GitChat写《深入分析Java语法糖》的时候,又用到了很多反编译相关的知识,遂发现哪篇文章已有些过时。于是,这篇文章就这样呈现在…

Java不规则数组

多维数组被解释为是数组的数组,所以因此会衍生出一种不规则数组。 规则的 43 二维数组有 12 个元素,而不规则数组就不一定了。如下代码静态初始化了一个不规则数组。 int intArray[][] {{1,2}, {11}, {21,22,23}, {31,32,33}};**高维数组(…