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

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

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

瀏覽:207日期: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精品久久久久久| 国产高潮在线| 亚洲精品一级二级| 黑丝一区二区三区| 91久久久精品国产| 中文视频一区| 18国产精品| 精品成人18| 国产综合婷婷| 亚洲精品日本| 免费观看亚洲天堂| 日韩欧美少妇| 麻豆成全视频免费观看在线看| 性感美女一区二区在线观看| 午夜日本精品| 日韩国产精品久久久| 国产91在线播放精品| 亚洲成人免费| 国产探花一区二区| 欧美不卡视频| 国产乱论精品| 黑丝一区二区三区| 久久久久97| 男人天堂欧美日韩| 国产在线观看91一区二区三区| 宅男噜噜噜66国产日韩在线观看| 日韩av成人高清| 精品视频免费| 欧美在线综合| 国产一区二区亚洲| 亚洲精品看片| 精品中文一区| 国产一区二区精品久| 热久久免费视频| 日韩在线欧美| 欧美aⅴ一区二区三区视频| 国产综合精品一区| 久久精品毛片| 日本va欧美va精品发布| 亚洲欧洲另类| 欧美aa在线观看| 精品淫伦v久久水蜜桃| 亚洲永久字幕| 亚洲手机在线| 色吊丝一区二区| 国语精品一区| 美女在线视频一区| 午夜天堂精品久久久久| 亚洲免费网址| 亚洲成人一区在线观看| 国产欧美自拍| 日韩午夜精品| 久久蜜桃av| 高清av不卡| 久久99精品久久久野外观看| 亚洲精品乱码日韩| 老司机免费视频一区二区| 99精品电影| 最新中文字幕在线播放| 日韩中文一区二区| 亚洲一卡久久| 久久久久久一区二区| 免费一区二区三区在线视频| 免费不卡中文字幕在线| 久久久一二三| 国产精品久久久久久妇女| 日本不卡视频在线观看| 蜜臀av在线播放一区二区三区| 红桃视频欧美| 欧美综合二区| 蜜臀av国产精品久久久久| 国产农村妇女精品一二区| 伊人久久在线| 五月激情久久| 久久精品在线| 韩日一区二区三区| 亚洲欧洲一区| 热久久久久久久| 亚洲一区二区毛片| 日韩av中文在线观看| 国产精品中文字幕制服诱惑| 国产精品久久久久久妇女| 精品视频97| 亚洲国产综合在线看不卡| 午夜久久一区| 日韩中文字幕| 欧美久久精品| 国产一区二区三区四区大秀| 亚洲日本网址| 亚洲综合不卡| 日本免费新一区视频| 免费精品一区| 国产精品xxx| 国产高清久久| 日本免费新一区视频| 国产一区二区亚洲| 丝袜美腿亚洲色图| 国产伦精品一区二区三区视频 | 欧美一级精品| 日韩在线a电影| 国产精品1区| 日韩欧美精品综合| 亚洲一区二区三区中文字幕在线观看| 桃色一区二区| 91综合久久爱com| 亚洲天堂久久| 国产精品成人**免费视频 | 麻豆精品视频在线| 好看的亚洲午夜视频在线| 蜜桃久久久久久| 日韩二区在线观看| 精品视频97| 日本成人在线一区| 欧美高清一区| 精品欠久久久中文字幕加勒比| 亚洲视频播放| 九色porny丨国产首页在线| 日韩va亚洲va欧美va久久| 国产综合婷婷| 影音先锋久久精品| 99国产精品免费视频观看| 久久精品一区二区国产| 日韩精品一级二级| 久久精品国产亚洲夜色av网站| 日韩欧美中文字幕在线视频| 婷婷成人综合| 日本精品影院| 热久久久久久| 日韩中文字幕av电影| 三级精品视频| 精品黄色一级片| 欧美精品99| 丝袜诱惑制服诱惑色一区在线观看| 青青久久av| 极品日韩av| 国产色播av在线| 成人日韩av| 色黄视频在线观看| 国产在线观看www| 精品一区二区三区视频在线播放| 久久国产乱子精品免费女| 亚洲精品乱码久久久久久蜜桃麻豆 | 久久国产婷婷国产香蕉| 麻豆国产精品| 美女精品在线| 精品欧美激情在线观看| 亚洲精品在线国产| 日本不卡视频在线观看| 欧美专区一区| 日韩av不卡一区二区| 久久99国产精品视频| 樱桃视频成人在线观看| 成人精品亚洲| 亚洲网站视频| 亚洲激情另类| 欧洲一区二区三区精品| 捆绑调教日本一区二区三区| 麻豆久久一区| 国产日韩欧美高清免费| 最新亚洲国产| 蜜桃久久av一区| 久久精品导航| 精品三级av在线导航| 亚洲一级特黄| 蜜桃av一区二区| 日韩精品一级中文字幕精品视频免费观看 | 久久精品高清| 尤物精品在线| 国产精品s色| 日韩大片在线| 麻豆国产在线| 欧美一级一区| 欧美va天堂在线| 中文字幕一区二区三区在线视频| 久久国产日韩欧美精品| 水野朝阳av一区二区三区| 91精品尤物| 日本亚洲视频在线| 视频一区中文字幕国产| 国产成人1区| 精品国产91| 国产欧美日韩| 日本国产欧美| 日本vs亚洲vs韩国一区三区二区| 国产精品红桃| 亚洲成人日韩| 国产欧美日韩在线一区二区| 国产高清不卡| 国产日产一区| 中文视频一区| 免费福利视频一区二区三区| 亚洲在线国产日韩欧美| 亲子伦视频一区二区三区| 国产精品亚洲一区二区在线观看 | 国产欧美高清| 日韩精品亚洲专区|