IT袋

当前位置:主页 > 经验教程 > 建站编程 >

TOPSIS综合评价法及其Python实现

TOPSIS综合评价法及其Python实现(2)

时间:2024-02-22 18:36:54 来源:IT袋 作者:马勇
导读:TOPSIS综合评价法及其Python实现,式中 M 为: 完成正向化后,即可进行标准化或归一化。 代码 以下为 TOPSIS 算法的代码,使用了两种权重添加方法。 import numpy as npimport pandas as pdfrom sklearn

TOPSIS综合评价法及其Python实现

TOPSIS综合评价法及其Python实现

式中M为:

TOPSIS综合评价法及其Python实现

完成正向化后,即可进行标准化或归一化。

代码

以下为 TOPSIS 算法的代码,使用了两种权重添加方法。

import numpy as np
import pandas as pd
from sklearn.datasets import make_regression
from sklearn.preprocessing import StandardScaler
def topsis(data, weights=0, use_weights=0):
    '''
    use_weights == 0 表明不使用权重
    use_weights == 1 表明使用数据权重
    use_weights == 2 表明使用方法权重
    '''
    data = np.array(data)
    data = StandardScaler().fit_transform(data)
    m, n = data.shape
    if use_weights == 1: # # ! 加权方法 1
        data = data * weights  # 计算加权标准化矩阵
    dataMax = data.max(axis=0) # 最优解
    dataMin = data.min(axis=0) # 最劣解
    D_max_ij = np.zeros([m,n])
    D_min_ij = np.zeros([m,n])
    # 计算距离 
    if use_weights == 2: # ! 加权方法 2
        D_max_ij = ((dataMax - data) ** 2) * weights
        D_min_ij = ((dataMin - data) ** 2) * weights
    else:
        D_max_ij = (dataMax - data) ** 2
        D_min_ij = (dataMin - data) ** 2
            
    D_max_i = np.sqrt(D_max_ij.sum(axis=1))
    D_min_i = np.sqrt(D_min_ij.sum(axis=1))
    S_i = D_min_i / (D_min_i + D_max_i)
    return pd.DataFrame(S_i)
    
X, y = make_regression(n_samples=200, n_features=4, noise=0.5, random_state=10)
topsis(X, weights=(0.1, 0.5, 0.2, 0.2), use_weights=2)

以上分享的TOPSIS综合评价法及其Python实现的具体内容,未经IT袋网网(www.itdai.com)允许禁止转载!

相关阅读

  • 电脑有些网页打不开怎么解决 教你访问被禁止的网站

    电脑有些网页打不开怎么解决 教你访问被禁止的网站

    对于许多网友来说电脑有些网页打不开怎么解决和教你访问被禁止的网站方面的介绍,接下来IT袋小编为大家介绍。 在使用浏览器的时候,打开网页却出现显示失败的情况,无法加载网页。这

  • 5个即将推出的可能会挑战VS Code的代码编辑器

    5个即将推出的可能会挑战VS Code的代码编辑器

    为大家介绍的是5个即将推出的可能会挑战VS的话题,接下来分享详细内容。 这些有趣的代码编辑器可能会在 2023 年取代 VS Code! 嗯,2022 年即将结束。 我们推出了针对 Linux 发布的新的卓越代码

  • 什么是ACID 它的特性是什么?

    什么是ACID 它的特性是什么?

    跟大家说一说什么是ACID方面的知识,下面IT袋网为您详细介绍 当谈到ACID特性时,一个常见的例子是银行转账。 假设有一个银行数据库,其中包含两个表:信用卡表和储蓄表。 现在,用户A要将

  • OSPF特殊区域类型之Totally NSSA区域特点以及优缺点有哪些

    OSPF特殊区域类型之Totally NSSA区域特点以及优缺点有哪些

    对于大多数网友来说OSPF特殊区域类型之Totally方面的讲解,具体内容如下: Totally NSSA区域是OSPF特殊区域中的一种类型,其主要特点是允许引入自治系统外部路由。 在Totally NSSA区域中,自治系统