加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

大势所趋!数据科学家必知的5种图算法

发布时间:2019-09-28 06:26:16 所属栏目:建站 来源:读芯术
导读:在万物相连的天下里,用户并不是独立的个别,互相之间都有某种接洽。构建呆板进修模子时,偶然也会将这种接洽放入模子中。 固然相关数据库中无法在差异数行(用户)间行使这种相关,但在图数据库里,这样做很是简朴。 本文将先容一些数据科学家必知的重要的

直观地说,网页排名算法会给有许多伴侣的用户打高分,而这些用户又有许多facebook上的伴侣。

  1. pageranks = nx.pagerank(fb) 
  2. print(pageranks) 
  3. ------------------------------------------------------ 
  4. {0: 0.006289602618466542, 
  5.  1: 0.00023590202311540972, 
  6.  2: 0.00020310565091694562, 
  7.  3: 0.00022552359869430617, 
  8.  4: 0.00023849264701222462, 
  9. ........} 

这样可以获得排序后的网页排名算法或最有影响力的用户:

  1. import operator 
  2. sorted_pagerank = sorted(pagerank.items(), key=operator.itemgetter(1),reverse = True) 
  3. print(sorted_pagerank) 
  4. ------------------------------------------------------ 
  5. [(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用于最有影响力的用户。

这里可以看到很具影响力用户的子图:

  1. first_degree_connected_nodes = list(fb.neighbors(3437)) 
  2. second_degree_connected_nodes = [] 
  3. for x in first_degree_connected_nodes: 
  4.  second_degree_connected_nodes+=list(fb.neighbors(x)) 
  5. second_degree_connected_nodes.remove(3437) 
  6. 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] 
  7. node_size = [1000 if v == 3437 else 35 for v in subgraph_3437] 
  8. plt.style.use('fivethirtyeight') 
  9. plt.rcParams['figure.figsize'] = (20, 15) 
  10. plt.axis('off')nx.draw_networkx(subgraph_3437, pos, with_labels = False, node_color=node_color,node_size=node_size ) 
  11. plt.show() 
局面所趋!数据科学家必知的5种图算法

最有影响力的用户(黄点)

5.中心性怀抱

中心怀抱有许多可以用来做呆板进修模子的特征。以下将先容个中的两种。这里可以看到一些其他的丈量要领:https://networkx.github.io/documentation/networkx-1.10/reference/algorithms.centrality.html

中介中心性:伴侣最多的用户很重要,毗连两个地理位置的用户也很重要,由于它让用户可以看到来自差异地理位置的内容。中介中心性量化了一个特定节点在其他两个节点之间最短路径中呈现的次数。

度中心性:即节点的毗连数。

应用

中心性怀抱可以用作任何呆板进修模子的特征。

编码

以下代码用于查找子图的中介中心性。

  1. pos = nx.spring_layout(subgraph_3437) 
  2. betweennessCentrality = nx.betweenness_centrality(subgraph_3437,normalized=True, endpoints=True)node_size = [v * 10000 for v in betweennessCentrality.values()] 
  3. plt.figure(figsize=(20,20)) 
  4. nx.draw_networkx(subgraph_3437, pos=pos, with_labels=False, 
  5.  node_size=node_size ) 
  6. plt.axis('off') 

局面所趋!数据科学家必知的5种图算法

如上可以看到按中介中心性值调解了节点的巨细。这些节点可以看作是信息转达者。断开高中介中心性的节点会将图分成很多部门。

总结

本文先容了一些很具影响力的图算法,它们从各方面改变了人们的糊口方法。

跟着社会数据的大量涌现,收集说明可以在很洪流平上辅佐人们改造模子,发生庞大代价,乃至还会增长人类对天下的熟悉。

现今图算法层出不穷,以上这些是笔者最喜好的。假如感乐趣,接待对这些算法举办深入研究。本文仅对该规模举办了必然的先容。

这里是本文中提到的全部算法的Kaggle Kernel:https://www.kaggle.com/mlwhiz/top-graph-algorithms

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读