• szm
    2019-03-04
    有2个问题:
    第一个:pagerank已经是字典类型了,为什么还要用pagerank_list = {node: rank for node, rank in pagerank.items()}将其转换为字典呢?是不是删掉这个语句也没关系?
    第二个:阈值大于0.005的图仍有很多重叠在一起,无法观看,请问怎样才能让画出来的图像美观呢?

    编辑回复: 第一个问题:对的,pagerank是字典类型,直接使用nx.set_node_attributes(graph, name = 'pagerank', values=pagerank)是OK的
    第二个问题,阈值大于0.005时,很多图重叠在一起,可以采用nx.circular_layout(graph)来进行显示。这样可以让筛选出来的点都分布到一个圆上,来显示出来他们之间的关系。

    
     3
  • third
    2019-02-27
    pagerank 值是: {'C': 0.22514635472743896, 'A': 0.3245609358176832, 'D': 0.22514635472743894, 'B': 0.22514635472743896}

    import networkx as nx
    # 创建有向图
    G = nx.DiGraph()
    # 有向图之间边的关系
    edges = [("A", "B"), ("A", "C"), ("A", "D"), ("B", "A"), ("B", "D"), ("C", "A"), ("D", "B"), ("D", "C")]
    for edge in edges:
        G.add_edge(edge[0], edge[1])
    pagerank_list = nx.pagerank(G, alpha=0.85)
    print("pagerank 值是:", pagerank_list)
    展开

    编辑回复: 正确。

    
     2
  • 滢
    2019-04-21
    %15跳转概率,对应的阻尼因子是0.85 , 阻尼因子默认就是0.85,所以在创建的时候可以直接省略啊alpha参数的设定。
    import networkx
    #创建有向图
    digraph = networkx.DiGraph()
    #有向图之间边的关系
    edges = [("A", "B"), ("A", "C"), ("A", "D"), ("B", "A"), ("B", "D"), ("C", "A"), ("D", "B"), ("D", "C")]
    for edge in edges:
        digraph.add_edge(edge[0],edge[1])
    pagerank_list = networkx.pagerank(digraph)
    print('PageRank 值是:',pagerank_list)
    输出结果:
    PageRank 值是: {'A': 0.3245609358176831, 'B': 0.22514635472743894, 'C': 0.22514635472743894, 'D': 0.22514635472743894}
    展开

    编辑回复: 正确,默认是0.85,所以可以省略。

    
     1
  • 白夜
    2019-02-27
    默认阻尼就是0.85,alpha去掉完事、、
    pagerank 值是: {'A': 0.3245609358176831, 'B': 0.22514635472743894, 'C': 0.22514635472743894, 'D': 0.22514635472743894}

    编辑回复: 这样使用最方便,alpha默认是0.85

    
     1
  • third
    2019-02-27
    提问:
     UserWarning: Pandas doesn't allow columns to be created via a new attribute name - see https://pandas.pydata.org/pandas-docs/stable/indexing.html#attribute-access

    不允许列被新属性创建???

    点击网页进去,也没有找到这个警告。
    需要修改或者别的什么东西吗?
    展开
    
     1
  • Ronnyz
    2019-11-23
    将alpha=0.85
    pagerank值为: {'A': 0.3245609358176831, 'B': 0.22514635472743894, 'C': 0.22514635472743894, 'D': 0.22514635472743894}

    作者回复: 对的 正确

    
    
  • S.Mona
    2019-10-16
    pagerank计算的影响力,搜索结果按照影响力评分排序,这个和ElasticSearch的相关度评分排序搜索排序搜索结果有什么异同?
    
    
  • WS
    2019-08-05
    老师,怎么筛选出某个人物的有向图?

    作者回复: 你可以通过 graph.edges取出所有的边,然后对所有边进行遍历查找

    
    
  • 永降不息之雨
    2019-07-03
    老师关于希拉里邮件的案例,这一段一直看不懂。
    我print(temp)只有得到两个人名,
    但是我print(edges_weights_temp)后
    除了人名,后面还多了一个数字,
    老师这数字是怎么来的,这段语法能帮忙解释一下吗?
        temp=(rew[0],row[1])
    if temp not in edges_weights_temp:
            edges_weights_temp[temp] = 1
        else:
            edges_weights_temp[temp] = edges_weights_temp[temp] + 1
    展开

    编辑回复: 我在程序里保存边(发送者->接受者)的权重的代码:
    for row in zip(emails.MetadataFrom, emails.MetadataTo, emails.RawText):
        temp = (row[0], row[1])
        if temp not in edges_weights_temp:
            edges_weights_temp[temp] = 1
        else:
            edges_weights_temp[temp] = edges_weights_temp[temp] + 1

    如果你print(edges_weights_temp)应该是类似这样的结果:
    {('Jake Sullivan', 'Hillary Clinton'): 815, ('nan', 'Hillary Clinton'): 20, ('Cheryl Mills', ';h'): 1, ...
    这里('Jake Sullivan', 'Hillary Clinton') 就是我们的temp,也就(row[0], row[1]),也就是保存的发送者->接收者的次数,次数为815次。
    if temp not in edges_weights_temp 判断下在字典edges_weights_temp中是否已经存在了边temp,如果没有存在就创建一个,赋值为1,也就是代表他们通信了1次。如果存在了,就找出来当时的次数,然后+1

    
    
  • mickey
    2019-03-05
    import networkx as nx
    # 创建有向图
    G = nx.DiGraph()
    # 有向图之间边的关系
    edges = [("A", "B"), ("A", "C"), ("A", "D"), ("B", "A"), ("B", "D"), ("C", "A"), ("D", "B"), ("D", "C")]
    for edge in edges:
        G.add_edge(edge[0], edge[1])
    pagerank_list = nx.pagerank(G) #alpha为阻尼因子,默认值:0.85
    print("pagerank值是:", pagerank_list)

    pagerank值是: {'A': 0.3245609358176831, 'B': 0.22514635472743894, 'C': 0.22514635472743894, 'D': 0.22514635472743894}
    展开

    作者回复: Good Job

    
    
  • 王彬成
    2019-03-01
    1、pagerank_list=nx.pagerank(G,alpha=1)理解
    参考链接:https://networkx.github.io/documentation/networkx-1.10/reference/generated/networkx.algorithms.link_analysis.pagerank_alg.pagerank.html
    alpha指的是阻尼因子。根据公式了解到,这因子代表用户按照跳转链接来上网的概率。
    题目说15%的概率随机跳转,所以阻尼因子为0.85

    2、代码
    import networkx as nx
    # 创建有向图
    G=nx.DiGraph()
    # 有向图之间边的关系
    edges = [("A", "B"), ("A", "C"), ("A", "D"), ("B", "A"), ("B", "D"), ("C", "A"), ("D", "B"), ("D", "C")]
    for edge in edges:
        G.add_edge(edge[0],edge[1])
    pagerank_list=nx.pagerank(G,alpha=0.85)
    print('pagerank 值是: ', pagerank_list)

    3、结果
    pagerank 值是: {'A': 0.3245609358176831, 'B': 0.22514635472743894, 'C': 0.22514635472743894, 'D': 0.22514635472743894}

    展开

    编辑回复: 结果正确,对alpha阻尼因子的理解也正确

    
    
我们在线,来聊聊吧