用python复现一下论文Influence maximization in social networks based on TOPSIS 中的方法

用python复现一下论文Influence maximization in social networks based on TOPSIS 中的方法。
自己的一些理解,由于有点菜,可能不太正确和严谨。
TOPSIS是用于选择多种解决路径中最优的一种,在论文中用于选择种子节点。影响元素包括直接影响、间接影响、直接重叠、间接重叠。对于四者权重的分配,目前还没构思好。暂且用【0.3, 0.2, 0.3, 0.2】。

代码

TOPSIS的实现

import numpy as np


def topsis(data1, weight=None, n=0):
    # 二维数组的矩阵转换成pandas中的数据类型dataframe
    # data2 = pd.DataFrame(data1, index=[i for i in range(1, n+1)], columns=['DS', 'IDS', 'DO', 'IDO'])

    # 归一化
    data = data1 / np.sqrt((data1 ** 2).sum())

    # 最优最劣方案
    # Z是正理想解和负理想解矩阵
    Z = pd.DataFrame([data.min(), data.max()], index=['负理想解', '正理想解'])

    # 距离
    #weight = entropyWeight(data) if weight is None else np.array(weight)
    Result = data1.copy()
    Result['正理想解'] = np.sqrt(((data - Z.loc['正理想解']) ** 2 * weight).sum(axis=1))
    Result['负理想解'] = np.sqrt(((data - Z.loc['负理想解']) ** 2 * weight).sum(axis=1))
    # 综合得分
    Result['综合得分'] = Result['负理想解'] / (Resu
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值