按关键词阅读: 算法 Kassel Frankfurt Augsburg Mannheim
现在我们想要找出具有高影响力的用户 。 直观地说 , Pagerank 算法会给拥有很多朋友的用户打高分 , 而这些朋友又拥有很多 Facebook 朋友 。
pageranks = nx.pagerank(fb)print(pageranks)------------------------------------------------------{0: 0.006289602618466542, 1: 0.00023590202311540972, 2: 0.00020310565091694562, 3: 0.00022552359869430617, 4: 0.00023849264701222462,........}利用以下代码可以得到排序的 PageRank 或最具影响力的用户:
import operatorsorted_pagerank = sorted(pagerank.items(), key=operator.itemgetter(1),reverse = True)print(sorted_pagerank)------------------------------------------------------[(3437, 0.007614586844749603), (107, 0.006936420955866114), (1684, 0.0063671621383068295), (0, 0.006289602618466542), (1912, 0.0038769716008844974), (348, 0.0023480969727805783), (686, 0.0022193592598000193), (3980, 0.002170323579009993), (414, 0.0018002990470702262), (698, 0.0013171153138368807), (483, 0.0012974283300616082), (3830, 0.0011844348977671688), (376, 0.0009014073664792464), (2047, 0.000841029154597401), (56, 0.0008039024292749443), (25, 0.000800412660519768), (828, 0.0007886905420662135), (322, 0.0007867992190291396),......]以上 ID 即为最有影响力的用户 。 最具影响力用户的子图如下所示:
first_degree_connected_nodes = list(fb.neighbors(3437))second_degree_connected_nodes = []for x in first_degree_connected_nodes: second_degree_connected_nodes+=list(fb.neighbors(x))second_degree_connected_nodes.remove(3437)second_degree_connected_nodes = list(set(second_degree_connected_nodes))subgraph_3437 = nx.subgraph(fb,first_degree_connected_nodes+second_degree_connected_nodes)pos = nx.spring_layout(subgraph_3437)node_color = ['yellow' if v == 3437 else 'red' for v in subgraph_3437]node_size = [1000 if v == 3437 else 35 for v in subgraph_3437]plt.style.use('fivethirtyeight')plt.rcParams['figure.figsize'] = (20, 15)plt.axis('off')nx.draw_networkx(subgraph_3437, pos, with_labels = False, node_color=node_color,node_size=node_size )plt.show()
文章插图
黄色为最具影响力用户
中心性度量
你可以将许多中心性度量用作机器学习模型的特征 , 这里只谈其中的两个 。
其他度量链接:#current-flow-closeness 。
介数中心性:不仅拥有众多朋友的用户很重要 , 将一个地理位置连接到另一个位置的用户也很重要 , 因为这样可以让用户看到不同地点的内容 。
介数中心性量化了一个特定节点在其他两个节点之间最短路径中出现的次数 。
点度中心性:它只是节点的连接数 。
代码
以下是查找子图介数中心性的代码:
pos = nx.spring_layout(subgraph_3437)betweennessCentrality = nx.betweenness_centrality(subgraph_3437,normalized=True, endpoints=True)node_size = [v * 10000 for v in betweennessCentrality.values()]plt.figure(figsize=(20,20))nx.draw_networkx(subgraph_3437, pos=pos, with_labels=False, node_size=node_size )plt.axis('off')
文章插图
你可以在此处查看按介数中心性值确定大小的节点 。 他们可以被认为是信息传递者 。 打破任何具有高介数中心性的节点将会将图形分成许多部分 。
【算法|PageRank、最小生成树:ML开发者应该了解的五种图算法】原文地址:

稿源:(未知)
【傻大方】网址:http://www.shadafang.com/c/111J2H962020.html
标题:算法|PageRank、最小生成树:ML开发者应该了解的五种图算法( 三 )