归一化

指标一般分为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:UsersLiugengxinDesktop1.xlsx'
data=xlrd_read_data(path)
data=benefit_type(data)
#data=cost_type(data)
#print(data)
DataFrame(data).to_excel(r'c:UsersLiugengxinDesktop	est1.xlsx')

 固定型指标

rij=1-|a0-aij|/max(|a0-aij|)

原文地址:https://www.cnblogs.com/Liu269393/p/10281612.html