归一化
指标一般分为costtype、benefittype,进行归一化的方法不同,最后可以将其转换成0~1之间的数
import numpy as np import xlrd from pandas import DataFrame def 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 datamatrix def 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 data def 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 data path= 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|)