Beispiel #1
0
def test_cwba():
    n = 1000
    rho = Decimal(str(2.0))
    m = Decimal(str(0.0))
    censorP = 0.7
    avgRuns = 10
    increment = Decimal(str(1.0))
    spdaccs = []
    dsdaccs = []
    rdaccs = []
    params = []

    m += increment
    while int(m) < 20:
        #A, truth = cg.construct_adj(n,float(p),float(q))
        #A, truth = cg.constructWithHubs(n,float(p),float(q),r)
        A, truth = cwba.cwba_graph(n, int(m), float(rho))
        spdcorr, spdtotal = sim.runsim(truth, censorP,
                                       voting.scipy_weighted_knn,
                                       metrics.spd_mat(A), avgRuns)
        dsdcorr, dsdtotal = sim.runsim(truth, censorP,
                                       voting.scipy_weighted_knn,
                                       metrics.dsd_mat(A), avgRuns)
        rdcorr, rdtotal = sim.runsim(truth, censorP, voting.scipy_weighted_knn,
                                     metrics.rd_mat(A), avgRuns)
        spdaccs.append(spdcorr / spdtotal)
        dsdaccs.append(dsdcorr / dsdtotal)
        rdaccs.append(rdcorr / rdtotal)
        m += increment
        params.append(int(m))
    plotting.plot_params_vs_accuracy(params, [spdaccs, dsdaccs, rdaccs],
                                     "Minimum vertex degree (m)",
                                     ["SPD", "DSD", "RD"],
                                     "CWBA (" + u"\u03C1" + "=2)")
Beispiel #2
0
def test_cwba_inv():
    n = 1000
    rho_inv = Decimal(str(0.0))
    m = Decimal(str(300.0))
    censorP = 0.7
    avgRuns = 10
    increment = Decimal(str(0.05))
    spdaccs = []
    dsdaccs = []
    rdaccs = []
    params = []

    rho_inv += increment
    while float(rho_inv) < 1:
        #A, truth = cg.construct_adj(n,float(p),float(q))
        #A, truth = cg.constructWithHubs(n,float(p),float(q),r)
        A, truth = cwba.cwba_graph(n, int(m), 1 / float(rho_inv))
        spdcorr, spdtotal = sim.runsim(truth, censorP,
                                       voting.scipy_weighted_knn,
                                       metrics.spd_mat(A), avgRuns)
        dsdcorr, dsdtotal = sim.runsim(truth, censorP,
                                       voting.scipy_weighted_knn,
                                       metrics.dsd_mat(A), avgRuns)
        rdcorr, rdtotal = sim.runsim(truth, censorP, voting.scipy_weighted_knn,
                                     metrics.rd_mat(A), avgRuns)
        spdaccs.append(spdcorr / spdtotal)
        dsdaccs.append(dsdcorr / dsdtotal)
        rdaccs.append(rdcorr / rdtotal)
        rho_inv += increment
        params.append(float(rho_inv))
    plotting.plot_params_vs_accuracy(params, [spdaccs, dsdaccs, rdaccs],
                                     "1/rho", ["SPD", "DSD", "RD"])
Beispiel #3
0
def test_ncch_r():
    # Initialize parameters
    global n,rp,censorP,avgRuns,vote
    p = Decimal(str(0.2)) # p=0.2,0.8
    q = Decimal(str(0.5)) # q=0.5
    r = 100 # r=(0,20,1), r=(100,400,50)
    increment = 50
    accs_spd,accs_dsd,accs_rd = [],[],[]
    params = []

    # Run simulations
    while r <= 400:
        A, truth = ncch.construct_adj(n,float(p),float(q),r,rp)
        correct_spd, total_spd = sim.runsim(truth, censorP,
                                         vote, metrics.spd_mat(A), avgRuns)
        correct_dsd, total_dsd = sim.runsim(truth, censorP,
                                            vote, metrics.dsd_mat(A), avgRuns)
        correct_rd, total_rd = sim.runsim(truth, censorP,
                                          vote, metrics.rd_mat(A), avgRuns)
        accs_spd.append(correct_spd/total_spd)
        accs_dsd.append(correct_dsd/total_dsd)
        accs_rd.append(correct_rd/total_rd)
        print(r)
        params.append(r)
        r += increment
    plotting.plot_params_vs_accuracy(params, [accs_spd, accs_dsd, accs_rd],
                                     "Number of hubs",
                                     ["SPD","DSD","RD"],
                                     "NCCH (p="+str(p)+",q="+str(q)+")")
    return
Beispiel #4
0
def test_ncch_q():
    # Initialize parameters
    global n,r,rp,censorP,avgRuns,increment,vote
    p = Decimal(str(0.5))
    q = Decimal(str(0.0))
    accs_spd,accs_dsd,accs_rd = [],[],[]
    params = []

    # Run simulations
    while float(q) <= 1:
        A, truth = ncch.construct_adj(n,float(p),float(q),r,rp)
        correct_spd, total_spd = sim.runsim(truth, censorP,
                                         vote, metrics.spd_mat(A), avgRuns)
        correct_dsd, total_dsd = sim.runsim(truth, censorP,
                                            vote, metrics.dsd_mat(A), avgRuns)
        correct_rd, total_rd = sim.runsim(truth, censorP,
                                          vote, metrics.rd_mat(A), avgRuns)
        accs_spd.append(correct_spd/total_spd)
        accs_dsd.append(correct_dsd/total_dsd)
        accs_rd.append(correct_rd/total_rd)
        print(q)
        params.append(float(q))
        q += increment
    plotting.plot_params_vs_accuracy(params, [accs_spd, accs_dsd, accs_rd],
                                     "Edge deletion probability (q)",
                                     ["SPD","DSD","RD"],
                                     "NCCH (p=0.5)")
    return
Beispiel #5
0
def test_ncch_censor():
    # Initialize parameters
    global n,r,rp,avgRuns,vote
    p = Decimal(str(0.8)) # p=0.8
    q = Decimal(str(0.5)) # q=0.5
    censorP = Decimal(str(0.1))
    increment = Decimal(str(0.1))
    accs_spd,accs_dsd,accs_rd = [],[],[]
    params = []

    # Run simulations
    while float(censorP) < 1:
        A, truth = ncch.construct_adj(n,float(p),float(q),r,rp)
        correct_spd, total_spd = sim.runsim(truth, float(censorP),
                                         vote, metrics.spd_mat(A), avgRuns)
        correct_dsd, total_dsd = sim.runsim(truth, float(censorP),
                                            vote, metrics.dsd_mat(A), avgRuns)
        correct_rd, total_rd = sim.runsim(truth, float(censorP),
                                          vote, metrics.rd_mat(A), avgRuns)
        accs_spd.append(correct_spd/total_spd)
        accs_dsd.append(correct_dsd/total_dsd)
        accs_rd.append(correct_rd/total_rd)
        print(censorP)
        params.append(float(censorP))
        censorP += increment
    plotting.plot_params_vs_accuracy(params, [accs_spd, accs_dsd, accs_rd],
                                     "Vertex label censor proportion",
                                     ["SPD","DSD","RD"],
                                     "NCCH (p="+str(p)+",q="+str(q)+")")
    return
Beispiel #6
0
def test_cwba_rhoinv():
    # Initialize parameters
    global n, censorP, avgRuns, vote
    rho_inv = Decimal(str(0.05))
    m = Decimal(str(300.0))
    increment = Decimal(str(0.05))
    accs_spd, accs_dsd, accs_rd = [], [], []
    params = []

    # Run simulations
    while float(rho_inv) <= 1:
        A, truth = cwba.cwba_graph(n, int(m), 1 / float(rho_inv))
        correct_spd, total_spd = sim.runsim(truth, censorP, vote,
                                            metrics.spd_mat(A), avgRuns)
        correct_dsd, total_dsd = sim.runsim(truth, censorP, vote,
                                            metrics.dsd_mat(A), avgRuns)
        correct_rd, total_rd = sim.runsim(truth, censorP, vote,
                                          metrics.rd_mat(A), avgRuns)
        accs_spd.append(correct_spd / total_spd)
        accs_dsd.append(correct_dsd / total_dsd)
        accs_rd.append(correct_rd / total_rd)
        print(rho_inv)
        params.append(float(rho_inv))
        rho_inv += increment
    rho_str = u"\u03C1"
    plotting.plot_params_vs_accuracy(
        params, [accs_spd, accs_dsd, accs_rd],
        "Inverse likeliness of clusters (1/" + rho_str + ")",
        ["SPD", "DSD", "RD"], "CWBA (m=300)")
    return
Beispiel #7
0
def test_cwba_m():
    # Initialize parameters
    global n, censorP, avgRuns, vote
    rho = Decimal(str(2.0))
    m = Decimal(str(1.0))
    increment = Decimal(str(1.0))
    accs_spd, accs_dsd, accs_rd = [], [], []
    params = []

    # Run simulations
    while int(m) < 20:
        A, truth = cwba.cwba_graph(n, int(m), float(rho))
        correct_spd, total_spd = sim.runsim(truth, censorP, vote,
                                            metrics.spd_mat(A), avgRuns)
        correct_dsd, total_dsd = sim.runsim(truth, censorP, vote,
                                            metrics.dsd_mat(A), avgRuns)
        correct_rd, total_rd = sim.runsim(truth, censorP, vote,
                                          metrics.rd_mat(A), avgRuns)
        accs_spd.append(correct_spd / total_spd)
        accs_dsd.append(correct_dsd / total_dsd)
        accs_rd.append(correct_rd / total_rd)
        print(m)
        params.append(int(m))
        m += increment
    rho_str = u"\u03C1"
    plotting.plot_params_vs_accuracy(params, [accs_spd, accs_dsd, accs_rd],
                                     "New vertex degree (m)",
                                     ["SPD", "DSD", "RD"],
                                     "CWBA (" + rho_str + "=2)")
    return
Beispiel #8
0
def runtest_completeGraphs():
    n = 200
    q = 0.5
    censorP = 0.3
    avgRuns = 10
    dsdacc, dsdparam = suite_completeGraphs(n, q, test_completeGraphs, censorP,
                                            voting.scipy_weighted_knn,
                                            metrics.dsd_mat, avgRuns)
    spdacc, spdparam = suite_completeGraphs(n, q, test_completeGraphs, censorP,
                                            voting.scipy_weighted_knn,
                                            metrics.spd_mat, avgRuns)
    rdacc, rdparam = suite_completeGraphs(n, q, test_completeGraphs, censorP,
                                          voting.scipy_weighted_knn,
                                          metrics.rd_mat, avgRuns)
    plotting.plot_params_vs_accuracy(spdparam, [spdacc, dsdacc, rdacc], "p",
                                     ["SPD", "DSD", "RD"])
    return
Beispiel #9
0
def test_coauthor():
    spdaccs, dsdaccs, rdaccs, params = [], [], [], []
    f = open('./coauthor_acc_vs_k.csv', 'r')
    for line in f.readlines():
        line = line.rstrip()
        k, spd, dsd, rd = line.split(',')
        if k == "k":
            continue
        params.append(float(k))
        spdaccs.append(float(spd))
        dsdaccs.append(float(dsd))
        rdaccs.append(float(rd))
    plotting.plot_params_vs_accuracy(params, [spdaccs, dsdaccs, rdaccs],
                                     "k nearest neighbors (k)",
                                     ["SPD", "DSD", "RD"],
                                     "Coauthorship Citation Network")
    f.close()
Beispiel #10
0
def test():
    n = 250
    p = Decimal(str(0.0))
    q = Decimal(str(0.0))
    censorP = 0.3
    avgRuns = 5
    increment = Decimal(str(0.05))
    spdaccs1 = []
    spdaccs2 = []
    dsdaccs = []
    rdaccs = []
    params = []
    r = 100

    q = Decimal(str(0.5))
    while float(p) <= 1:
        A, truth = cg.construct_adj(n, float(p), float(q))
        #A, truth = cg.constructWithHubs(n,float(p),float(q),r)
        #spdcorr1, spdtotal1 = sim.runsim(truth, censorP, voting.scipy_weighted_knn, metrics.spd_mat(A), avgRuns)
        spdcorr1, spdtotal1 = sim.runsim(truth, censorP,
                                         voting.sklearn_weighted_knn,
                                         metrics.dsd_mat(A), avgRuns)
        spdcorr2, spdtotal2 = sim.runsim(truth, censorP,
                                         voting.knn_weighted_majority_vote,
                                         metrics.dsd_mat(A), avgRuns)
        #dsdcorr, dsdtotal = sim.runsim(truth, censorP, voting.scipy_weighted_knn, metrics.dsd_mat(A), avgRuns)
        #rdcorr, rdtotal = sim.runsim(truth, censorP, voting.scipy_weighted_knn, metrics.rd_mat(A), avgRuns)
        spdaccs1.append(spdcorr1 / spdtotal1)
        spdaccs2.append(spdcorr2 / spdtotal2)
        #dsdaccs.append(dsdcorr/dsdtotal)
        #rdaccs.append(rdcorr/rdtotal)
        print(p)
        print(spdcorr1 / spdtotal1)
        print(spdcorr2 / spdtotal2)
        p += increment
        params.append(float(p))
    #plotting.plot_params_vs_accuracy(params, [spdaccs, dsdaccs, rdaccs], "Edge addition probability (p)", ["SPD","DSD", "RD"], "NCC (q=0.5)")
    plotting.plot_params_vs_accuracy(params, [spdaccs1, spdaccs2],
                                     "Edge addition probability (p)",
                                     ["SPD Scipy", "SPD Mine"],
                                     "NCC (q=0.5, censorP=0.6)")
    return
Beispiel #11
0
def test_censor():
    n = 250
    p = Decimal(str(0.3))
    q = Decimal(str(0.5))
    censorP = Decimal(str(0.05))
    avgRuns = 10
    increment = Decimal(str(0.05))
    spdaccs = []
    dsdaccs = []
    rdaccs = []
    params = []

    r = 100

    #p += increment
    while float(censorP) < 1:
        A, truth = cg.construct_adj(n, float(p), float(q))
        #A, truth = cg.constructWithHubs(n,float(p),float(q),r)
        spdcorr, spdtotal = sim.runsim(truth, float(censorP),
                                       voting.scipy_weighted_knn,
                                       metrics.spd_mat(A), avgRuns)
        dsdcorr, dsdtotal = sim.runsim(truth, float(censorP),
                                       voting.scipy_weighted_knn,
                                       metrics.dsd_mat(A), avgRuns)
        rdcorr, rdtotal = sim.runsim(truth, float(censorP),
                                     voting.scipy_weighted_knn,
                                     metrics.rd_mat(A), avgRuns)
        spdaccs.append(spdcorr / spdtotal)
        dsdaccs.append(dsdcorr / dsdtotal)
        rdaccs.append(rdcorr / rdtotal)
        print(censorP)
        censorP += increment
        params.append(float(censorP))
    plotting.plot_params_vs_accuracy(params, [spdaccs, dsdaccs, rdaccs],
                                     "Censoring probability (censorP)",
                                     ["SPD", "DSD", "RD"], "NCC (q=0.5)")
    return
Beispiel #12
0
def test_cg():
    n = 250
    p = Decimal(str(0.0))
    q = Decimal(str(0.0))
    censorP = 0.6
    avgRuns = 10
    increment = Decimal(str(0.05))
    spdaccs = []
    dsdaccs = []
    rdaccs = []
    params = []

    r = 100

    #p += increment
    while float(p) <= 1:
        q = Decimal(str(0.5))
        A, truth = cg.construct_adj(n, float(p), float(q))
        #A, truth = cg.constructWithHubs(n,float(p),float(q),r)
        spdcorr, spdtotal = sim.runsim(truth, censorP,
                                       voting.scipy_weighted_knn,
                                       metrics.spd_mat(A), avgRuns)
        dsdcorr, dsdtotal = sim.runsim(truth, censorP,
                                       voting.scipy_weighted_knn,
                                       metrics.dsd_mat(A), avgRuns)
        rdcorr, rdtotal = sim.runsim(truth, censorP, voting.scipy_weighted_knn,
                                     metrics.rd_mat(A), avgRuns)
        spdaccs.append(spdcorr / spdtotal)
        dsdaccs.append(dsdcorr / dsdtotal)
        rdaccs.append(rdcorr / rdtotal)
        print(p)
        p += increment
        params.append(float(p))
    plotting.plot_params_vs_accuracy(params, [spdaccs, dsdaccs, rdaccs],
                                     "Edge addition probability (p)",
                                     ["SPD", "DSD", "RD"], "NCC (q=0.5)")

    p = Decimal(str(0.5))
    q = Decimal(str(0.0))
    spdaccs = []
    dsdaccs = []
    rdaccs = []
    params = []

    q += increment
    while float(q) <= 1:
        A, truth = cg.construct_adj(n, float(p), float(q))
        #A, truth = cg.constructWithHubs(n,float(p),float(q),r)
        spdcorr, spdtotal = sim.runsim(truth, censorP,
                                       voting.knn_weighted_majority_vote,
                                       metrics.spd_mat(A), avgRuns)
        dsdcorr, dsdtotal = sim.runsim(truth, censorP,
                                       voting.knn_weighted_majority_vote,
                                       metrics.dsd_mat(A), avgRuns)
        rdcorr, rdtotal = sim.runsim(truth, censorP,
                                     voting.knn_weighted_majority_vote,
                                     metrics.rd_mat(A), avgRuns)
        spdaccs.append(spdcorr / spdtotal)
        dsdaccs.append(dsdcorr / dsdtotal)
        rdaccs.append(rdcorr / rdtotal)
        print(q)
        q += increment
        params.append(float(q))
    plotting.plot_params_vs_accuracy(params, [spdaccs, dsdaccs, rdaccs],
                                     "Edge deletion probability (q)",
                                     ["SPD", "DSD", "RD"],
                                     "NCCH (p=0.5, number of hubs=100)")
    return
Beispiel #13
0
def test_cg_h():
    n = 250
    p = Decimal(str(0.5))
    q = Decimal(str(0.5))
    censorP = 0.7
    avgRuns = 10
    increment = Decimal(str(1.0))
    spdaccs = []
    dsdaccs = []
    rdaccs = []
    params = []

    r = Decimal(str(0.0))

    r += increment
    while float(r) <= 20:
        #A, truth = cg.construct_adj(n,float(p),float(q))
        A, truth = cg.constructWithHubs(n, float(p), float(q), int(r))
        spdcorr, spdtotal = sim.runsim(truth, censorP,
                                       voting.scipy_weighted_knn,
                                       metrics.spd_mat(A), avgRuns)
        dsdcorr, dsdtotal = sim.runsim(truth, censorP,
                                       voting.scipy_weighted_knn,
                                       metrics.dsd_mat(A), avgRuns)
        rdcorr, rdtotal = sim.runsim(truth, censorP, voting.scipy_weighted_knn,
                                     metrics.rd_mat(A), avgRuns)
        spdaccs.append(spdcorr / spdtotal)
        dsdaccs.append(dsdcorr / dsdtotal)
        rdaccs.append(rdcorr / rdtotal)
        r += increment
        params.append(int(r))
    plotting.plot_params_vs_accuracy(params, [spdaccs, dsdaccs, rdaccs],
                                     "Number of hubs", ["SPD", "DSD", "RD"])

    increment = Decimal(str(50.0))
    spdaccs = []
    dsdaccs = []
    rdaccs = []
    params = []

    r = Decimal(str(50.0))

    r += increment
    while float(r) <= 400:
        #A, truth = cg.construct_adj(n,float(p),float(q))
        A, truth = cg.constructWithHubs(n, float(p), float(q), int(r))
        spdcorr, spdtotal = sim.runsim(truth, censorP,
                                       voting.scipy_weighted_knn,
                                       metrics.spd_mat(A), avgRuns)
        dsdcorr, dsdtotal = sim.runsim(truth, censorP,
                                       voting.scipy_weighted_knn,
                                       metrics.dsd_mat(A), avgRuns)
        rdcorr, rdtotal = sim.runsim(truth, censorP, voting.scipy_weighted_knn,
                                     metrics.rd_mat(A), avgRuns)
        spdaccs.append(spdcorr / spdtotal)
        dsdaccs.append(dsdcorr / dsdtotal)
        rdaccs.append(rdcorr / rdtotal)
        r += increment
        params.append(int(r))
    plotting.plot_params_vs_accuracy(params, [spdaccs, dsdaccs, rdaccs],
                                     "Number of hubs", ["SPD", "DSD", "RD"])
    return