예제 #1
0
def test_label_propagation():
    """
    Test Label Propagation procedure.
    """
    graph = nx.newman_watts_strogatz_graph(50, 5, 0.3)

    model = LabelPropagation()

    model.fit(graph)
    memberships = model.get_memberships()

    indices = [k for k, v in memberships.items()].sort()
    nodes = [node for node in graph.nodes()].sort()

    assert graph.number_of_nodes() == len(memberships)
    assert indices == nodes
    assert type(memberships) == dict

    graph = nx.newman_watts_strogatz_graph(150, 5, 0.3)

    model = LabelPropagation()

    model.fit(graph)
    memberships = model.get_memberships()

    indices = [k for k, v in memberships.items()].sort()
    nodes = [node for node in graph.nodes()].sort()

    assert graph.number_of_nodes() == len(memberships)
    assert indices == nodes
    assert type(memberships) == dict
예제 #2
0
def labelPropagation(population, neighbors, probability):
    g = nx.newman_watts_strogatz_graph(population, neighbors, probability)
    model = LabelPropagation()
    model.fit(g)

    #print(model.get_memberships())
    return [model.get_memberships()]
예제 #3
0
    cluster_membership = model.get_memberships()
    for key in sorted(cluster_membership.keys()):
        try:
            l[cluster_membership[key]].add(key)
        except:
            l[cluster_membership[key]] = {key}
    return l


nums = [802, 810, 822, 834, 844, 853, 863, 878, 883, 999]
for num in nums:
    reader = GraphReader("twitch%s" % num)
    graph = reader.get_graph()
    target = reader.get_target()
    d = {}
    model = LabelPropagation()
    comms = run(model, graph)
    coeffs = []
    for key in sorted(comms.keys()):
        sub = graph.subgraph(list(comms[key]))
        coeff = nx.average_clustering(sub)
        coeffs.append(coeff)
    avg_coeff = sum(coeffs) / len(coeffs)
    d['label'] = avg_coeff

    model = EdMot()
    comms = run(model, graph)
    coeffs = []
    for key in sorted(comms.keys()):
        sub = graph.subgraph(list(comms[key]))
        coeff = nx.average_clustering(sub)
예제 #4
0
nums = [802, 810, 822, 834, 844, 853, 863, 878, 883, 999]
algs = ['label', 'edmot', 'gemsec', 'scd']
for alg_name in algs:
    path = str(os.getcwd()) + "/scores/" + str(alg_name)
    if not os.path.exists(str(path)):
        os.makedirs(path)
    for num in nums:
        file = open(
            str(path) + str(os.sep) + str(alg_name) + "_" + str(num) + ".csv",
            "w")
        csvwriter = csv.writer(file)
        csvwriter.writerow(['comm', 'size'])
        reader = GraphReader("twitch%s" % num)
        graph = reader.get_graph()
        if alg_name == 'label':
            model = LabelPropagation()
        elif alg_name == 'edmot':
            model = EdMot()
        elif alg_name == 'gemsec':
            model = GEMSEC()
        elif alg_name == 'scd':
            model = SCD()
        l = {}
        model.fit(graph)
        cluster_membership = model.get_memberships()
        for key in sorted(cluster_membership.keys()):
            try:
                l[cluster_membership[key]].add(key)
            except:
                l[cluster_membership[key]] = {key}
        tot = 0
"""Label Propagation example."""

import networkx as nx
from karateclub.community_detection.non_overlapping import LabelPropagation

g = nx.newman_watts_strogatz_graph(100, 20, 0.05)

model = LabelPropagation()

model.fit(g)