topsis综合评价法spss,topsis综合评价模型
Python应用:TOPSIS综合评价方法及案例分析1。TOPSIS综合评价法1。计算步骤2。数据规范化处理。个案分析
一、TOPSIS综合评价法
TOPSIS方法
:根据与理想解的相似程度进行排序的技术,根据有限数量的评价对象与理想目标的接近程度进行排序,适用于多项目标
和比较选择多个方案
的分析方法。 1.计算步骤
(1)构造
的初始矩阵A(n个评价指标,m个目标)。
公式中,aij代表第I个目标的j指标值(1im,1jn)。
# Get data data=pd.read_excel(研究生院评估数据. xlsx )。值#程序和数据都在一个根目录下A=data[:1:] #获取初始矩阵A=np.array(A) #变成数组m,n=a.shape [0],a.shape [1(归一化)
#归一化处理A1=np.ones ([m,n],float)for I in range(n):mu=NP . power(NP . sum(NP . power(a[I],2)),0.5) A1 [i]=a [i]/mu其中:
对于不同类型的需求,还有其他的规范化方法,如图2所示。
(2)由于各个指标的量纲可能不同,需要对原始数据进行
其中wj是第j个指数的权重。
权重确定方法:德尔菲法、对数最小二乘法、层次分析法等。
W=[w1,w2,w3,w4]W=np.array(W)Z=np.ones([m,n],float)for I in range(len(W)):for j in range(len(W)):if I==j:W[I,j]=W0[j] else: W[i,j]=0(3)构造加权标准化矩阵Z
式中,J*为效益指标集(指标值越大越好);‘j’是面向成本的指标集(指标值越小越好)。
Zmax=np.ones([1,n],float)Zmin=np.ones([1,n],float)for j in range(n):Zmax[0,j]=max(Z[:j])Zmin[0,j]=min(Z[:j])(4)根据加权矩阵判断正负理想解Z+ ,Z-
对于范围(m)内的I:Smax=NP . sqrt(NP . sum(NP . square(Z[I,-Zmax[0,))Smin=NP . sqrt(NP . sum(NP . square(Z[I,-Zmin[0,))(5)计算各个方案的到正理想点的距离Si+和负理想点的距离Si-
c=smin/(sminsmax)c=PD . data frame(c,index=[ institutions I for I in list( 12345 )])按照各方案的相对接近程度排序。数值越大越好。找出最优解。
二、数据归一化处理(6)计算各个方案的相对贴近度Ci
:指标值越大越好。
#标准化处理A1=NP。one([A . Shape[0],A. Shape [1]],float) for I in n: if max (A [:I])==min (A [:I]): A [:I]=1else: for J
#标准化处理A1=NP。one([A . Shape[0],A. Shape [1]],float) for I in n: if max (A [:I])==min (A [:I]): A [:I]=1else: for J
其中m是获得最佳值的点。
#归一化处理A1=NP。one([a . shape[0],a. shape [1]],float) for I in n: for j in m: A1 [j,i]=m/(m ABS (a [j,i])-m)(1) 效益型指标
将指标值设置在区间[a,b]内是最优的,lb的下限最差,ub的上限最差。
#标准化处理A1=NP。Ones ([a. shape [0],a. shape [1]],float) for I in n: for j in m: if lb=a [j,i]=a: A1 [j,i]=(a [j,i]-lb)/I]=1 elifb=a [j,i]=ub: a1 [j,i]=(ub-a [j,I]/(u B- b)else:# a [j,i] lb或a[j,I]ub 1[j,i]=机构选定的四个评价收集的数据显示在表格中。
研究生院人均专著/(本科生/人)生师比科研经费/(万人/年)人均专著/. 1550004 . 720 . 266005 . 630 . 4770006 . 740 . 91010002 . 351 . 224001 . 8说明:人均专著和科研。
作为公证人导入熊猫作为pd#TOPSIS导入熊猫方法函数def Topsis(A1): W0=[0.2,0.3,0.4,0.1] #权重矩阵W=np.ones([A1.shape[1],A1.shape[1]],float)for I in range(len(W)):for j in range(len(W)):if I==j:W[I,j]=W0[j] else: W[i,j]=0 Z=np.ones([A1.shape[0],A1.shape[1]],float) Z=np.dot(A1,W) #加权矩阵#计算正、负理想解Zmax=np.ones([1,A1.shape[1]],float) Zmin=np.ones([1,A1.shape[1]],float)对于范围(A1 .shape[1]):如果j==3:Zmax[0,j]=min(Z[:j]) Zmin[0,j]=max(Z[:j]) else: Zmax[0,j]=max(Z[:j]) Zmin[0,j]=min(Z[:j计算各个方案的相对贴近度对于范围(a1)中的I,C C=[]。shape[0]):Smax=NP。sqrt(NP。sum(NP。square(Z[I,-Zmax[0,)Smin=NP。sqrt(NP。sum(NP。square(Z[I,-Zmin[0,)C.append(Smin/(Smax Smin)) C=pd .DataFrame(C,index=[院校i for i in list(12345)])返回C#标准化处理定义标准(A): #效益型指标A1=np.ones([A.shape[0],A.shape[1]],float)for I in range(A . shape[1]):如果I==0或i==2: if max(A[:i])==min(A[:i]): A1[:i]=1 else:for j in range(A . shape[0]):A1[j,i]=(A[j,i]-min(A[:I])/(max(A[:I])成本型指标elif i==3: if max(A[:i])==min(A[:i]): A1[:I]=1 else:for j in range(A . shape[0]):A1[j,i]=(max(A[:i])-A[j,i])/(max(A[:i])-min(A[:I])#区间型指标else: a,b,lb,ub=5,6,2,12 for j in range(A . shape[0]):if lb=A[j,i] a: A1[j,i]=(A[j,i]-lb)/(a-lb) elif a=A[j,i] b: A1[j,i]=1 elif b=A[j,i]=ub: A1[j,i]=(ub-A[j,I]/(u b-b)else:# A[I读取初始矩阵并计算def data(file _ path):data=PD。read _ excel(文件路径).值A=data[:1:] A=np.array(A) #m,n=A.shape[0],A.shape[1] #m表示行数,n表示列数返回A#权重a=数据(研究生院评估数据. xlsx )A1=标准(A)C=Topsis(A1)印刷(三)输出:
院校1 0.553038院校2 0.610575院校3 0.662306院校4 0.659379院校5 0.281729(2) 成本型指标
:
[1] gxddn,懵懂的烤鸡。数学建模及其应用。上海交通大学出版社。