日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

數據挖掘 - 如何用python實現《多社交網絡的影響力最大化問題分析》中的算法?

瀏覽:204日期:2022-07-05 08:03:52

問題描述

作為一名python小白,導師讓我用python實現論文中的算法,對于其中所要求的技術點以及如何實現算法顯得一頭霧水。目前python過完廖老師的python教程,正在看networkx文檔。望各位幫我解決以下問題:1.實現算法所要求技術點2.如何應對此類論文3.數據挖掘方向學習建議

論文地址 : http://cjc.ict.ac.cn/online/o...

問題解答

回答1:

經過一周,現已初步完成,其中多出代碼不夠美觀以及效率不高,還請指點

# _*_ coding:utf-8 _*_# ==================================================================================## Description: Influence Maximization on Multiple Social Networks## ==================================================================================import matplotlib.pyplot as plt import networkx as nximport heapq#總圖G = nx.DiGraph()def load_graph(file): ’’’ 加載文件為列表格式,并得到G,畫出圖結構 ’’’#將總列表設成全局格式 global gllist#迭代文件中每個元素 with open(file) as f:lines = f.readlines() mylist = [line.strip().split() for line in lines]gllist = [] #將字符串型轉換為整型 for i in mylist:gllist.append(i[:-2]+map(lambda x: float(x), i[-2:])) print ’初始全局列表:’ print gllist drawlist=[] #提取二維列表mylist每行前三個元素,賦給新的列表drawlist for i in range(len(mylist)):drawlist.append([])for j in range(3): drawlist[i].append(mylist[i][j]) #將列表drawlist加載為有向加權圖 G.add_weighted_edges_from(drawlist) nx.draw(G, with_labels=True, width=1, node_color=’y’, edge_color=’b’) plt.show() print ’G圖中所有節點:’,G.nodes() print ’G圖中所有邊:’,G.edges() print ’n’def get_self_node(gllist, target=None): ’’’ 獲取目標節點的自傳播節點,返回selflist并包含目標節點 ’’’ #初始化自傳播節點列表 selflist = [target]#存放已傳播節點列表 haslist = []flag = 0while (flag != 0): flag = 0 for target in selflist: if target not in haslist:for i in range(len(gllist)): #判斷二維列表中,每行第三個元素是否為1,若為1,則為自傳播節點 if ((gllist[i][0] == target)or(gllist[i][1]==target))and(gllist[i][3]==1.0):if gllist[i][0] == target: if gllist[i][1] not in haslist:selflist.append(gllist[i][1])haslist.append(gllist[i][1])flag += 1else: if gllist[i][0] not in haslist:selflist.append(gllist[i][0])haslist.append(gllist[i][0])flag += 1#去除重復元素haslist = set(haslist) selflist = set(selflist)#去除重復元素 selflist = set(selflist) return selflistdef longest_path(gllist,source=None,target=None): ’’’ 獲取起始點到實體的最大路徑集合,返回為longestpath列表 ’’’ longestpath = [] newlist = [] for i in range(len(gllist)):newlist.append([])for j in range(3): newlist[i].append(gllist[i][j]) #構建圖結構 G1 = nx.DiGraph() #添加帶權有向邊 G1.add_weighted_edges_from(newlist) #獲取目標節點的所有自傳播街邊,并存入selflist中 selflist = get_self_node(gllist, target) max_path = 0 val_path = 1 #獲取初始節點到目標節點及目標節點的自傳播節點的最大路徑 for v in selflist:if v != source: #遍歷兩點之間所有路徑,并進行比對 for path in nx.all_simple_paths(G1,source=source,target=v):#判斷路徑后兩個元素是否為相同實體(如:b1->b2)if is_self_transmit_node(path[-2], v) == 0: for i in range(0, len(path)-1):val_path *= G1.get_edge_data(path[i], path[i+1])[’weight’] if max_path < val_path:max_path = val_path val_path = 1#若目標節點為起始節點則直接跳出else: continue ############ 有待商榷 ##############longestpath.append(max_path) #返回初始節點到實體的最大路徑 return longestpathdef is_self_transmit_node(u, v): ’’’ 判斷目標節點不為起始節點的自傳播點 ’’’ flag = 0 #獲得起始節點的所有自傳播點 selflist = get_self_node(gllist, v) for x in selflist:if u == x: flag = 1 return flagdef single_strong_infl(longestpath): ’’’ 計算起始點到實體的傳播概率(影響強度),返回影響強度stronginfl ’’’ temp = 1 for x in longestpath:temp *= 1-x stronginfl = 1-temp return stronginfldef all_strong_infl(G): ’’’ 獲得每個節點對實體的影響概率 ’’’ allstrong = [] #初始化所有節點的加權影響范圍列表 gnodes = [] #初始化節點列表 tempnodes = [] #初始化臨時節點列表gnodes = G.nodes()for u in gnodes:strong = 0 #存儲初始節點對每個實體的影響范圍加權,初始化為0 #重置臨時節點列表tempnodes = G.nodes()for v in tempnodes: #非自身節點 if u != v: #判斷目標節點不為起始節點的自傳播點if is_self_transmit_node(v, u) == 0: #獲取起始節點到實體間最大加權路徑,并存入longestpath longestpath = longest_path(gllist, u, v)#去除已遍歷目標節點的所有自傳播節點 renode = get_self_node(gllist, v) for x in renode:if x != v: tempnodes.remove(x) #計算起始節點到實體間傳播概率(影響強度) stronginfl = single_strong_infl(longestpath) strong += stronginfl #添加單個節點到所有實體的加權影響范圍 allstrong.append([u, round(strong, 2)])#返回每個節點到所有實體的加權影響范圍 return allstrong #output allstrong : [[’a1’, 2.48], [’a2’, 1.6880000000000002], [’b1’, 0.7], [’b2’, 0], [’c1’, 0], [’d2’, 0.6]]def uS_e_uppergain(u, ev, S): ’’’ 獲取節點u在集合S的基礎上對實體ev的影響增益, 傳入候選節點,上界gain(u|S, ev) ’’’#獲取目前實體的所有自傳播節點 selflist = get_self_node(gllist, ev) stronglist = [] #遍歷自傳遍節點 for v in selflist:’’’判斷節點v是否存在種子集合S中其中v為單個節點,如v(ev, Gi)S為種子節點集合,如[’a1’,’a2’,’b1’,’b2’,’c1’,’d2’]’’’if v in S: ppSv = 1else: longestpath = [] #遍歷種子集合 for s in S:#初始化路徑權值與最大路徑權值val_path = 1max_path = 0#遍歷兩點之間所有路徑,并進行比對for path in nx.all_simple_paths(G,source=s,target=v): #判斷路徑后兩個元素是否為相同實體(如:b1->b2) if is_self_transmit_node(path[-2], v) == 0: for i in range(0, len(path)-1): val_path *= G.get_edge_data(path[i], path[i+1])[’weight’]if max_path < val_path: max_path = val_path#重置路徑權值為1val_path = 1#將最大加權路徑存入longestpath列表longestpath.append(max_path) #得到上界pp(S,v)的影響概率,上界pp(S,v) ppSv = single_strong_infl(longestpath)stronglist.append(ppSv) #得到上界pp(S,ev)的影響概率,上界pp(S,ev) ppSev = single_strong_infl(stronglist)#獲取pp(u,ev) ppuev = single_strong_infl(longest_path(gllist, u, ev))#計算上界gain(u|S,ev) uSevgain = (1 - ppSev) * ppuev return uSevgaindef uppergain(u, emu, ems, S): ’’’ 在已有種子集合S的基礎上,求得節點u的影響增益上界, 其中傳進參數ems為二維列表,如[[’a1’,2.48],[’a2’,1.688]],S則為[’a1’,’a2’] ’’’ uSgain = 0.0 #遍歷emu得到列表形式,得到如[’a1’,2.48]形式 for ev in emu:#判斷節點是否存在種子集合中if ev[0] in S: uSgain += uS_e_uppergain(u, ev[0], S)else: uSgain += ev[1] #返回上界gain(u|S)return uSgain def bound_base_imms(G, k): ’’’ 完全使用影響增益上界的方式選擇top-k個種子節點的過程 ’’’ #初始化emu,H,初始化ems=空集,S=空集 Htemp = [] Htemp = all_strong_infl(G) H = [] #遍歷Htemp=[[’a1’,2.48],[’a2’,1.688]],得到如[’a1’,2.48]形式 for x in Htemp:#逐個獲取二維列表中每一行,形式為[’a1’,2.48,0]H.append([x[0],x[1],0]) emu = [] emu = all_strong_infl(G)ems = [] S = []for i in range(k):#提取堆頂元素,tnode的形式為[’a1’,2.48,0]tnode = heapq.nlargest(1, H, key=lambda x: x[1])#將[[’b2’, 3.1, 0]]格式改為[’b2’, 3.1, 0]格式tnode = sum(tnode, [])while (tnode[2] != i): gain = 0.0 #獲取節點u的影響增益上界 gain = uppergain(tnode, emu, ems, S) #賦值影響范圍 tnode[1] = gain #修改status tnode[2] = i#對堆進行排序 H = heapq.nlargest(len(H), H, key=lambda x: x[1])#獲取堆頂元素tnode = heapq.nlargest(1, H, key=lambda x: x[1])tnode = sum(tnode, [])#添加node到種子集合S.append([tnode[0]])#更新ems,添加新節點及節點對每個實體的影響范圍加權ems.append([tnode[0], tnode[1]])#刪除堆頂元素H.remove(tnode) print ems return sum(S, [])if __name__==’__main__’: #大小為k的種子集合S k = 60#加載文件數據,得到圖G和初始列表gllist load_graph(’test.txt’)#完全使用影響增益上界值的計算過程函數,打印種子集合S print ’種子集合:’,bound_base_imms(G, k)

test.txta1 b1 0.2 0a1 c1 0.8 0a2 b2 0.4 0a2 d2 1 0b1 c1 0.7 0c2 a2 0.8 0d2 b2 0.6 0a1 a2 1 1a2 a1 0.1 1....a1 l1 0.5 0a1 m1 0.5 0a1 q1 0.5 0a1 v1 0.5 0a1 z1 0.5 0a1 s1 0.5 0a1 w1 0.5 0a1 u1 0.5 0其中前兩列為傳播實體,第三列為實體間傳播概率,最后一列為0代表同一網絡傳播,為1代表網絡間自傳播。

下來要進行優化: 1.采用獨立級聯模型,設置閾值 2.將最大路徑改為最短路徑,利用log

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
99久久九九| 久久久久伊人| 日韩天堂av| 中文精品在线| 亚洲精品精选| 在线国产日韩| 日韩国产欧美在线视频| 日韩国产高清在线| 国产九一精品| 国产成人精品一区二区三区视频| 精品国产亚洲一区二区三区在线| 久久青青视频| 不卡一区2区| 视频一区视频二区中文| 日韩精品一区二区三区中文| 国产毛片精品| 水蜜桃久久夜色精品一区| 午夜av不卡| 亚洲少妇在线| 日韩不卡一区二区| 欧美一级网站| 国产精品毛片久久| 午夜视频精品| 啪啪亚洲精品| 高清不卡亚洲| 日韩视频免费| 久久国产三级精品| 日韩高清欧美| 蜜臀久久99精品久久久画质超高清| 日本va欧美va欧美va精品| 国产极品久久久久久久久波多结野| 成人国产精品一区二区网站| 激情五月综合| 国产三级一区| 久久激情网站| 日韩中文字幕不卡| 欧美黑人巨大videos精品| 国产成人精品一区二区免费看京 | 欧美日韩免费观看一区=区三区| 老司机精品久久| 国产精品黄网站| 精品亚洲美女网站| 日韩手机在线| 欧洲一区二区三区精品| 亚洲在线久久| 97精品视频在线看| 亚洲综合激情在线| 国产精品久久久久蜜臀| 蜜桃视频第一区免费观看| 国产精品日韩精品在线播放| 亚洲二区免费| 国产精品毛片视频| 国产亚洲福利| 国产成人久久精品一区二区三区| 蜜桃久久av| 亚洲最新无码中文字幕久久| 蜜桃久久久久久| 成人小电影网站| 四虎精品一区二区免费| 亚洲成人不卡| 国产精品探花在线观看| 国产真实久久| 久久精品国产99国产精品| 午夜久久99| 国产精品自在| 视频一区在线播放| 香蕉视频亚洲一级| 国产欧美日韩亚洲一区二区三区| 欧美午夜精彩| 久久中文字幕一区二区| 亚洲色图网站| 欧美~级网站不卡| 欧美激情综合| 日韩区一区二| 免费毛片在线不卡| 日本一区二区高清不卡| 日韩欧美在线精品| 伊人成人在线视频| 欧美羞羞视频| 国产日产一区| 一区二区三区国产在线| 美女毛片一区二区三区四区| 国产videos久久| 欧美精品国产白浆久久久久| 久久av一区二区三区| 久久久久国产精品一区三寸| 免费日韩一区二区三区| 亚州精品视频| 亚洲综合日韩| 不卡一区2区| 激情黄产视频在线免费观看| 国产日韩欧美高清免费| 美国欧美日韩国产在线播放| 激情婷婷综合| 欧美aa在线观看| 高清不卡一区| 精品在线网站观看| 国产精品久久免费视频| 日韩1区2区3区| 亚洲精品乱码| 亚洲精品伊人| 中文字幕一区二区三区四区久久| 国产精品毛片| 亚洲欧洲午夜| 黄色成人精品网站| 五月婷婷亚洲| 亚洲欧洲午夜| 在线亚洲精品| 日韩一区二区久久| 欧美日韩一二三四| 国产91精品对白在线播放| 日韩在线高清| 亲子伦视频一区二区三区| 日韩成人综合| 日韩精品永久网址| 日韩在线看片| 亚洲天堂一区二区| 欧洲亚洲一区二区三区| 综合日韩av| 日韩电影免费网址| 久久激情婷婷| 亚洲欧美伊人| 先锋影音国产一区| 一区二区三区网站| 在线日韩成人| 日韩欧美三区| 国产欧美日韩在线一区二区 | 亚洲免费毛片| 欧美日韩国产一区二区在线观看| 欧美一区二区三区久久| 69堂免费精品视频在线播放| 国产精品亚洲四区在线观看| 国产精品九九| 色乱码一区二区三区网站| 日韩欧美精品一区| 国产乱人伦丫前精品视频 | 蜜桃av.网站在线观看| 久久精品影视| 精品1区2区3区4区| 欧美99久久| av成人国产| 亚洲精品综合| 国产精品一国产精品| 精品香蕉视频| 亚洲精品一级二级| 999在线观看精品免费不卡网站| 日韩在线观看一区二区| 亚洲深夜福利在线观看| 日本亚洲最大的色成网站www | 蜜桃久久久久久| 日韩不卡一区二区三区 | 亚洲涩涩在线| 日韩亚洲国产欧美| 日本在线不卡视频| 国产精品亲子伦av一区二区三区 | 欧美黑人做爰爽爽爽| 欧美一级鲁丝片| 国产精品普通话对白| 7777精品| 国产精品成久久久久| 欧美午夜精品一区二区三区电影| 久久国产精品毛片| 国产精品一卡| 久久精品青草| 亚洲人妖在线| 国产成人精品一区二区免费看京| 欧美99久久| 日韩av不卡一区二区| 精品亚洲成人| 一本一道久久a久久精品蜜桃| 日韩国产一二三区| 日本不卡免费高清视频在线| 免播放器亚洲| 麻豆一区二区99久久久久| 日韩在线观看不卡| 亚洲三级网址| 日韩大片在线| 亚洲精品中文字幕99999| 国产一区二区三区亚洲综合| 亚洲在线电影| 国产一区二区三区久久| 美女黄网久久| av日韩中文| 亚洲精品日本| 免费在线小视频| 欧美日韩亚洲一区三区| 999视频精品| 久久国产视频网| 偷拍欧美精品| 精品国产一区二区三区噜噜噜| 99国产精品99久久久久久粉嫩| 久久99影视| 蜜桃久久久久久| 亚洲电影有码| 国产精品男女| 国产视频亚洲| 成人片免费看| 久久精品xxxxx| 好吊日精品视频| 98精品视频|