灰色关联度
原创
©著作权归作者所有:来自51CTO博客作者不想悲伤到天明的原创作品,请联系作者获取转载授权,否则将追究法律责任
利用灰色关联度对 10 个学生进行评价排序。
灰色关联度分析具体步骤如下:
1. 确定比较对象(评价对象)和参考数列(评价标准)
这里评价对象的个数为 m = 10 , 评价指标变量有 8 个
比较数列为
这里
是第 i 个评价对象关于第 k 个指标变量
的取值 。参考数列为
, 这里
= 100 ,
。参考数列是一个最好评价对象的各指标中值。
2.对指标数据进行无量纲化(归一化处理)
由于系统中各因素的物理意义不同,导致数据的量纲也不一定相同,不便于比较,或在比较时难以得到正确的结论。因此在进行灰色关联度分析时,一般都要进行无量纲化的数据处理。
3.逐个计算每个被评价对象指标序列(比较序列)与参考序列对应元素的绝对差值
即
4. 计算灰色关联系数
图片是引用其他地方,
就是
。为比较数列
对参考数列
在 第 k 个指标上的关联系数,其中
为分辨系数,
,
分别为两级最小极差 , 两级最大极差 。一般来讲,分辨系数
越大,分辨率越大;
越小,分辨率越小。
5. 计算灰色关联度
灰色关联度的计算公式为
其中
为第 k 个指标变量
的权重, 这里取等权重 即 1/m = 1/8 。
为第 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("写入完成")