美文网首页
朴素simRank

朴素simRank

作者: DaydayHoliday | 来源:发表于2018-10-25 15:44 被阅读0次
'''

@author: Administrator
'''

def inNodes(node,edges):
    ins=[]
    for edge in edges:
        if edge[1]==node:
            ins.append(edge[0])
    return ins

def update_simRank(node1,node2,edges,simRank):
    if node1==node2:
        simRank[(node1,node2)]=1
        simRank[(node2,node1)]=1
        return simRank
    ins_1=inNodes(node1,edges)
    ins_2=inNodes(node2,edges)
    if len(ins_1)==0 or len(ins_2)==0:
        simRank[(node1,node2)]=0
        simRank[(node2,node1)]=0
        return simRank
    sum_sim=0
    for i in ins_1:
        for j in ins_2:
            if (i,j) in simRank:
                sum_sim+=simRank[(i,j)]
            elif i==j:
                sum_sim+=1
            else:
                sum_sim+=0
    C=0.8
    sim_ab=C*sum_sim/(len(ins_1)*len(ins_2))
    simRank[(node1,node2)]=sim_ab
    simRank[(node2,node1)]=sim_ab
    return simRank

if __name__ == '__main__':
    nodes=["Univ","ProfA","StudentA","ProfB","StudentB"]
    edges=[];
    edges.append(["Univ","ProfA"])
    edges.append(["Univ","ProfB"])
    edges.append(["ProfA","StudentA"])
    edges.append(["StudentA","Univ"])
    edges.append(["ProfB","StudentB"])
    edges.append(["StudentB","ProfB"])
    simRank={}
    i_total=20
    for i in range(i_total):
        for node1 in range(len(nodes)):
            for node2 in range(node1,len(nodes)):
                simRank=update_simRank(nodes[node1],nodes[node2],edges,simRank)
        print(simRank)

结果是:

{('Univ', 'Univ'): 1, ('Univ', 'ProfA'): 0.0, ('ProfA', 'Univ'): 0.0, ('Univ', 'StudentA'): 0.0, ('StudentA', 'Univ'): 0.0, ('Univ', 'ProfB'): 0.0, ('ProfB', 'Univ'): 0.0, ('Univ', 'StudentB'): 0.0, ('StudentB', 'Univ'): 0.0, ('ProfA', 'ProfA'): 1, ('ProfA', 'StudentA'): 0.0, ('StudentA', 'ProfA'): 0.0, ('ProfA', 'ProfB'): 0.4, ('ProfB', 'ProfA'): 0.4, ('ProfA', 'StudentB'): 0.0, ('StudentB', 'ProfA'): 0.0, ('StudentA', 'StudentA'): 1, ('StudentA', 'ProfB'): 0.0, ('ProfB', 'StudentA'): 0.0, ('StudentA', 'StudentB'): 0.32000000000000006, ('StudentB', 'StudentA'): 0.32000000000000006, ('ProfB', 'ProfB'): 1, ('ProfB', 'StudentB'): 0.0, ('StudentB', 'ProfB'): 0.0, ('StudentB', 'StudentB'): 1}

相关文章

  • 朴素simRank

    结果是:

  • An Efficient Similarity Search F

    相关文章: SimRank: A Measure of Structural-Context Similarity...

  • SimRank for 协同过滤

    概览 使用场景 直观解释 计算 & 拓展 举个栗子(python) 算法复杂度 最后真推荐歌了~ 使用场景 想象一...

  • simrank随机游走实现

    simrank在推荐系统中,应用的比较广泛,原理互联网上很多。实践中,使用spark进行计算时,当【用户】+【物料...

  • 你的文字

    你的文字朴素,朴素的真实 你的样子朴素,朴素的美丽 你的追求朴素,朴素的高尚 你的心灵朴素,朴素的珍贵 愿时光慢些...

  • 朴素理论的朴素

    浅谈儿童朴素理论 每个学前儿童都有对世界的认识和理解,儿童的成长伴随着认知的发展,也就是儿童朴素理...

  • 基于随机游走ACT、CosPlus、RWR、SimRank、LR

    平均通勤时间ACT( train, test ) function [ thisauc ] = ACT( tra...

  • 朴素

    断绝聪明抛弃智巧,人民可以得到百倍的好处;断绝仁爱抛弃义气,人民可以回归到孝慈的天性;断绝巧诈抛弃货利,盗贼也就不...

  • 朴素

    因为喜欢华丽所以喜欢朴素 ——木心

  • 朴素

    朴素,是一个人最好的底色,这个世界有很多困惑,但朴素的人总能找到,最适合自己的活法,相信心怀朴素,自有芳香...

网友评论

      本文标题:朴素simRank

      本文链接:https://www.haomeiwen.com/subject/nyhctqtx.html