def evaluate_our_method(website, iter_count, data_count, attibute=["profession"]):
    params = [
        {"kernel": "rbf", "C": 100, "gamma": 0.001},
        {"kernel": "rbf", "C": 10, "gamma": 0.001},
        {"kernel": "rbf", "C": 10, "gamma": 0.001},
    ]
    print("======Our; Iter Count: %d======" % iter_count)
    embedding = get_neibor_embedding("./embedding/%s_user_embedding_using_neibors_%d.data.json" % (website, iter_count))
    uids = [line.strip() for line in open("./%s_intersect_uid.data" % website)]
    # evaluate(get_label(website, 1, gender_reg), embedding)
    # evaluate(get_label(website, 2, age_reg), embedding)
    # evaluate(get_label(website, 3, location_reg), embedding)
    if "gender" in attibute:
        results = simple_evaluate(
            get_label(website, 1, gender_reg),
            embedding,
            params[0],
            data_count,
            data_range=total_data_arange["%s_gender" % (website)],
            uids=uids,
        )
        output_results(results, "%s_%s_%s_result_%d.out" % (website, "gender", "our", iter_count))
    if "age" in attibute:
        results = simple_evaluate(
            get_label(website, 2, age_reg),
            embedding,
            params[1],
            data_count,
            data_range=list(arange(0.05, 0.95, 0.05)),
            uids=uids,
        )
        output_results(results, "%s_%s_%s_result_%d.out" % (website, "age", "our", iter_count))
    if "location" in attibute:
        results = simple_evaluate(
            get_label(website, 3, location_reg),
            embedding,
            params[2],
            data_count,
            data_range=total_data_arange["%s_location" % (website)],
            uids=uids,
        )
        output_results(results, "%s_%s_%s_result_%d.out" % (website, "location", "our", iter_count))
    if "profession" in attibute:
        results = simple_evaluate(
            get_label(website, 4, profession_reg),
            embedding,
            params[2],
            data_count,
            data_range=total_data_arange["%s_profession" % (website)],
            uids=uids,
        )
        output_results(results, "%s_%s_%s_result_%d.out" % (website, "profession", "our", iter_count))
def evaluate_baseline(fname, data_count):
    deepwalk_params = [
        {'kernel': 'rbf',
         'C': 1000,
         'gamma': 0.001}, {'kernel': 'rbf',
                           'C': 100,
                           'gamma': 0.001}, {'kernel': 'rbf',
                                             'C': 10,
                                             'gamma': 0.001}
    ]
    line_params = [
        {'kernel': 'linear', 'C': 1},
        {'kernel': 'rbf', 'C': 100, 'gamma': 0.001},
        {'kernel': 'rbf', 'C': 1000, 'gamma': 0.001}
    ]
    if 'deepwalk' in fname:
        print('======Deepwalk======')
        params = deepwalk_params
    if 'line' in fname:
        print('======LINE======')
        params = line_params
    if 'weibo' in fname:
        website = 'weibo'
    else:
        website = 'zhihu'
    embedding = get_simple_embedding(fname)
    # evaluate(get_label(website, 1, gender_reg), embedding)
    # evaluate(get_label(website, 2, age_reg), embedding)
    # evaluate(get_label(website, 3, location_reg), embedding)
    simple_evaluate(
        get_label(website, 1, gender_reg), embedding, params[0], data_count)
def evaluate_our_method(website, iter_count, data_count):
    params = [
        {'kernel': 'rbf',
         'C': 100,
         'gamma': 0.001}, {'kernel': 'rbf',
                           'C': 10,
                           'gamma': 0.001}, {'kernel': 'rbf',
                                             'C': 10,
                                             'gamma': 0.001}
    ]
    print('======Our; Iter Count: %d======' % iter_count)
    embedding = get_neibor_embedding(
        './embedding/%s_user_embedding_using_neibors_%d.data.json' %
        (website, iter_count)
    )
    # evaluate(get_label(website, 1, gender_reg), embedding)
    # evaluate(get_label(website, 2, age_reg), embedding)
    # evaluate(get_label(website, 3, location_reg), embedding)
    simple_evaluate(
        get_label(website, 1, gender_reg), embedding, params[0], data_count)
    # simple_evaluate(get_label(website, 2, age_reg), embedding, params[1])
    simple_evaluate(
        get_label(website, 3, location_reg), embedding, params[2], data_count)
def main():
    website = "outputacm"
    method = "line"
    count = 100
    if method == "line":
        embedding = get_simple_embedding("./embedding/%s_user_embedding_using_line.data.json" % website)
    if method == "our":
        embedding = get_neibor_embedding("./embedding/%s_user_embedding_using_neibors_%d.data.json" % (website, count))
    print(len(embedding))
    results = simple_evaluate(
        get_label(website, 1, outputacm_reg),
        embedding,
        data_range=list(arange(0.1, 1, 0.1)),
        uid_file="./%s_intersect_uid.data" % website,
    )
    output_results(results, "%s_%s_result_%d.out" % (website, method, count))
    pass
def evaluate_baseline(fname, data_count, attibute=["profession"]):
    deepwalk_params = [
        {"kernel": "rbf", "C": 1000, "gamma": 0.001},
        {"kernel": "rbf", "C": 100, "gamma": 0.001},
        {"kernel": "rbf", "C": 10, "gamma": 0.001},
    ]
    line_params = [
        {"kernel": "linear", "C": 1},
        {"kernel": "rbf", "C": 100, "gamma": 0.001},
        {"kernel": "linear", "C": 1000, "gamma": 0.001},
    ]
    if "deepwalk" in fname:
        print("======Deepwalk======")
        baseline = "deepwalk"
        params = deepwalk_params
    if "line" in fname:
        print("======LINE======")
        params = line_params
        baseline = "line"
    if "weibo" in fname:
        website = "weibo"
    else:
        website = "zhihu"
    embedding = get_simple_embedding(fname)
    uids = [line.strip() for line in open("./%s_intersect_uid.data" % website)]
    # evaluate(get_label(website, 1, gender_reg), embedding)
    # evaluate(get_label(website, 2, age_reg), embedding)
    # evaluate(get_label(website, 3, location_reg), embedding)
    if "gender" in attibute:
        results = simple_evaluate(
            get_label(website, 1, gender_reg),
            embedding,
            params[0],
            data_count,
            data_range=total_data_arange["%s_gender" % (website)],
            uids=uids,
        )
        output_results(results, "%s_%s_%s_result.out" % (website, "gender", baseline))
    if "age" in attibute:
        results = simple_evaluate(
            get_label(website, 2, age_reg),
            embedding,
            params[1],
            data_count,
            data_range=list(arange(0.05, 0.95, 0.05)),
            uids=uids,
        )
        output_results(results, "%s_%s_%s_result.out" % (website, "age", baseline))
    if "location" in attibute:
        results = simple_evaluate(
            get_label(website, 3, location_reg),
            embedding,
            params[2],
            data_count,
            data_range=total_data_arange["%s_location" % (website)],
            uids=uids,
        )
        output_results(results, "%s_%s_%s_result.out" % (website, "location", baseline))
    if "profession" in attibute:
        results = simple_evaluate(
            get_label(website, 4, profession_reg),
            embedding,
            params[2],
            data_count,
            data_range=total_data_arange["%s_profession" % (website)],
            uids=uids,
        )
        output_results(results, "%s_%s_%s_result.out" % (website, "profession", baseline))