利用灰色关联度对 10 个学生进行评价排序。

灰色关联度_权重

灰色关联度分析具体步骤如下:

1.  确定比较对象(评价对象)和参考数列(评价标准)

 这里评价对象的个数为 m = 10 , 评价指标变量有 8 个

比较数列为  

灰色关联度_权重_02

  这里 

灰色关联度_数据_03

 是第 i 个评价对象关于第 k 个指标变量 

灰色关联度_数据_04

  的取值 。参考数列为  

灰色关联度_数据_05

 , 这里 

灰色关联度_评价指标_06

 = 100 , 

灰色关联度_权重_07

 。参考数列是一个最好评价对象的各指标中值。

2.对指标数据进行无量纲化(归一化处理)

由于系统中各因素的物理意义不同,导致数据的量纲也不一定相同,不便于比较,或在比较时难以得到正确的结论。因此在进行灰色关联度分析时,一般都要进行无量纲化的数据处理。

3.逐个计算每个被评价对象指标序列(比较序列)与参考序列对应元素的绝对差值

 即  

灰色关联度_评价指标_08

  

灰色关联度_评价指标_09

    

灰色关联度_数据_10

 4.  计算灰色关联系数

 

灰色关联度_数据_11

图片是引用其他地方, 

灰色关联度_权重_12

 就是 

灰色关联度_数据_13

 。为比较数列 

灰色关联度_评价指标_14

 对参考数列 

灰色关联度_评价指标_15

 在 第 k 个指标上的关联系数,其中 

灰色关联度_数据_16

  为分辨系数,

灰色关联度_数据_17

  ,

灰色关联度_权重_18

  分别为两级最小极差  , 两级最大极差 。一般来讲,分辨系数  

灰色关联度_数据_19

越大,分辨率越大;

灰色关联度_数据_19

越小,分辨率越小。

5.  计算灰色关联度

灰色关联度的计算公式为 

                                            

灰色关联度_评价指标_21

其中 

灰色关联度_数据_22

 为第 k 个指标变量 

灰色关联度_数据_04

 的权重, 这里取等权重 即 1/m = 1/8 。 

灰色关联度_权重_24

 为第 i 个评价对象对理想对象的灰色关联度。

6.  评价分析

根据灰色关联度的大小,对各评价对象进行排序,可建立评价对象的关联序,关联度越大其评价结果越好 。

clc, clear
4
a=textread('data101.txt');
t=ones(size(a))*100-a; %计算参考序列与每个序列的差
mmin=min(min(t)); %计算最小差
mmax=max(max(t)); %计算最大差
rho=0.5; %分辨系数
xs=(mmin+rho*mmax)./(t+rho*mmax) %计算灰色关联系数
gd=mean(xs,2) %取等权重,计算关联度
[sgd,ind2]=sort(gd,'descend') %对关联度按照从大到小排序
xlswrite('data103.xls',[xs,gd]) %把关联系数和关联度写到 Excel 文件中,便于做表
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

a = pd.read_excel("data1.xlsx").values[:,1:]
# print(a,type(a))
m,n = a.shape
t = np.ones((m,n))*100 - a # 计算差值
print(t)
mmin = min(np.min(t,axis=0)) #计算最小差
mmax = max(np.max(t,axis=0)) #计算最大差
print(mmin ,mmax)
rho = 0.5 # 分辨系数
xs = (mmin + rho*mmax) /(t+rho*mmax)
print(xs)
gd = np.mean(xs,axis=1)
print("gd")
gd.resize((gd.shape[0],1))
# print(gd.shape)
# print(xs.shape)

result = np.hstack((xs,gd))
print(gd)
# 从 0 开始的
print(gd.argsort(axis=0)) # 从小到大
df = pd.DataFrame(result)

df.to_excel('result.xlsx',sheet_name='表1')
print("写入完成")