topsis综合评价法和层次分析法,topsis评价法步骤
使用Python的TOPSIS综合评价法第一步是读取数据;第二步,数据收敛;第三步,数据归一化;步骤4,获取最佳列值向量和最差值向量;第五步,计算最佳方案和最差方案;步骤六,计算评价对象与最优方案接近度;最后,排序。
步骤一,读取数据;import pandas as PD # import panda toolkit import numpy as NP # import numpy toolkit data=PD . read _ excel( f: desktop python running file . xlsx )data[:5]
第二步,数据收敛;#将城市名称设置为索引data.set_index([Unnamed: 0],In=true) #获取列名n=list(data.columns)#高-优秀索引for i in n: data[i]=data[i] #低-优秀索引for i in n: data[i]=1/data[i]#中性指标for I In n:max=NP . max(data[I])data[I]=max/(max NP . ABS(data[I)-max))注:此处仅说明如果指标体系包含两类以上指标,注意嵌套使用if条件语句进行循环。
第三步,数据归一化;#归一化I in n:x=NP . power(NP . sum(NP . power(data[I],2)),0.5) data [i]=data [i]/x data [:5]
步骤4,获取最佳列值向量和最差值向量;A1=[]#获取I在n: max=np.max (data [I]) A1的最佳列值。Append (max) #转换形式A1=np.array(A1)#获取n中I的最差列值A2=[]:min=NP . min(data[I])A2。追加最优计算方案D1=[]对于范围内的I(1,len(data)1):D1=NP . power(NP . sum(NP . power(a1-data[I-1:I],2)。values),0.5) D1.append(d1)#变换形式D1=np.array(D1)#最坏方案D2=[]对于I在range (1,len (data) 1): D2=NP。动力(NP。sum (NP。幂(A2-data[I-1:I])0.5)D2 . append(D2)#变换形式D2=np.array(D2)第六步,计算被评价对象对最优方案的贴近度;c=D2/(D1D2)最后,排序。#创建新的数据框data1=pd.dataframe (c,Index=list(data . Index))data 2=PD . data frame(D1,Index=list(data . Index))data 3=PD . data frame(D2,Index=list(data.index))#按C值排序Data1[ Rank ]=Data1 . Rank(ascending=False)data 2[ Rank 1 ]=data 2 . Rank(ascending=False)data 3[ Rank 2 ]=data 3 . Rank(ascending=False)#重置列名