指标一般分为costtype、benefittype,进行归一化的方法不同,最后可以将其转换成0~1之间的数
import numpy as npimport xlrdfrom pandas import DataFramedef xlrd_read_data(path): table = xlrd.open_workbook(path).sheets()[0] #读取第一个表格 row = table.nrows # 行数 col = table.ncols # 列数 datamatrix = np.zeros((row, col))#生成一个nrows行ncols列,且元素均为0的初始矩阵 for x in range(col): cols = np.matrix(table.col_values(x)) # 把list转换为矩阵进行矩阵操作 datamatrix[:, x] = cols # 按列把数据存进矩阵中 return datamatrixdef benefit_type(data):#收益型指标 col=len(data[0]) row=len(data) Max=data.max(axis=0) #获取每一列的最大值 for i in range(col): Maxi=Max[i] for j in range(row): data[j][i]=data[j][i]/Maxi return datadef cost_type(data): #成本型指标 col=len(data[0]) row=len(data) Min=data.min(axis=0) for i in range(col): Mini=Min[i] for j in range(row): data[j][i]=Mini/data[j][i] return datapath= r'c:\Users\Liugengxin\Desktop\1.xlsx'data=xlrd_read_data(path)data=benefit_type(data)#data=cost_type(data)#print(data)DataFrame(data).to_excel(r'c:\Users\Liugengxin\Desktop\test1.xlsx')
固定型指标
rij=1-|a0-aij|/max(|a0-aij|)