社交網路影響力最大化 CELF演算法解決IM問題

2021-10-12 08:39:28 字數 2547 閱讀 7661

celf
資料集:facebook

# -*- coding:utf8 -*-

import numpy as np

import time

from collections import counter

from igraph import *

import random

import copy

import matplotlib.pyplot as plt

from random import uniform, seed

import pandas as pd

import time

from collections import counter

def generate_p(num):

p = np.random.rand(num)

return p

def ic(g, s, mc):

print('-----v', s)

spread =

for i in range(mc):

new_nodes, a = s[:], s[:]

while new_nodes != :

node_out = g.loc[g['source'].isin(new_nodes)]

node_out = node_out['target']

node_out = node_out.tolist()

success = np.random.uniform(0, 1, len(node_out)) < generate_p(len(node_out))

new_ones = list(np.extract(success, np.array(node_out)))

new_nodes = list(set(new_ones) - set(a))

print('new nodes', new_nodes)

a += new_nodes

print(spread)

return np.mean(spread)

def celf(g, k, mc):

g_v = g['source'].tolist()

g_v = list(set(g_v))

v_count = len(g_v)

s, spread, timelapse, start_time = , , , time.time()

# margin_gain = [ ic(g, [v], mc) for v in g_v ]

# look_up = dict(zip(g_v, margin_gain))

look_up = look

look_up = dict(sorted(look_up.items(), key = lambda x:(x[1]), reverse=true))

print('lookup', look_up)

s = list(look_up.keys())[0] # 第乙個加入的種子節點

spread = list(look_up.values())[0] # 第乙個種子的影響力傳播值

print('spread', spread)

spread_max, node_max = -1, -1

for s_index in range(k-1):

flag = 0

for i_index, i in enumerate(look_up.keys()):

print('i_index, i', i_index, i)

print(look_up)

if i not in s:

spread_i = ic(g, s + [i], mc)

spread_i_margin = spread_i - spread

spread_next_i = i_index + 1 if i_index+1 < v_count else i_index

if spread_i_margin > list(look_up.values())[spread_next_i]: # 如果節點i的inf spread大於上一輪lookup表中的最前面的節點的inf spread,直接加入種子集

flag = 1

spread = spread_i

break

elif spread_i > spread_max:

spread_max = s

node_max = i

look_up[i] = spread_i_margin

if flag == 0:

spread = spread_max

return (s, spread, timelapse)

data = pd.read_csv('../data/facebook1.csv')

p = generate_p(data.shape[0])

(s, spread, timelapse) = celf(data, k=3, mc=1)

print(s, spread, timelapse)

創業公司 Klout社交語義分析 微博影響力標準

現在的營銷者們開始關注文字語義分析 創業公司klout是一家衡量twitter linkedin和facebook使用者影響力的創業公司,剛剛獲得850萬美元投資,牽頭方為kleiner perkins caufield byer,參與此輪投資的還有greycroft partners,ff資產管理...

程式設計師開啟社交和打造影響力的最佳方式

對於性格內向的人來講,尤其是我們做技術出身的程式設計師,不擅於跟人打交道,性格內向,害羞且比較寡言的話,去堅持寫作吧。其實,性格內向的人,除了不擅於跟人交談之外,不擅於外放自己之外,其他的特點都是適合寫作。性格內向的人往往更能聚焦於內在的世界,有更強的感受和反思的能力,更能專注於自己的思想和情感,這...

紅人社交影響力之爭,2023年Q3戰況如何?

2020年第三季度,各個平台都有不同程度的革新和蛻變,抖音日活使用者破6億,快手宣布品牌公升級,小紅書 號強勢來襲,b站開放營銷投放,微博打造 號計畫 各平台的內容生態和使用者生態呈現怎樣的態勢?又有哪些紅人在第三季度脫穎而出?請隨克勞銳走進 2020年q3最具社交影響力kol盤點報告 看各平台熱門...