Ejemplo n.º 1
0
def generate_lookup(models: list, triples: np.array,
                    num_samples: int = 100, batch_size=4):
    """
    Generate lookup by evaluating models per relation

    It will be performed on TRAIN set for fariness(and
    not all relations are present in test set. 12 of them are missing)
    """
    lookup = dict()
    np.random.seed(0)
    triples = crop_per_relation(triples, num_samples)

    # Get scores for all models
    model_scores = dict()
    model_names = []
    for (model_name, model) in list(models.items()):
        print(model_name)
        model_names.append(model_name)
        model_scores[model_name] = evaluation_per_relation(triples, model, batch_size)

    # Aggregate scores into lookup table
    # Select the model with best MRR
    for i in range(len(triples.keys())):
        lookup[i] = max(model_scores, key=lambda x, curr_rel=i: model_scores[x][curr_rel]['MRR'])

    return lookup
Ejemplo n.º 2
0
def fig_cum_rewards(fout_name: str, cum_rewards: np.array):
    """ 累積報酬の棒グラフを作図する。
    """

    plt.figure()
    categories = list(cum_rewards.keys())
    ave = np.zeros(len(categories))
    stdev = np.zeros(len(categories))
    for i_cat, category in enumerate(categories):
        ave[i_cat] = np.mean(cum_rewards[category])
        stdev[i_cat] = np.std(cum_rewards[category])

    plt.bar(np.array(range(len(categories))),
            ave,
            tick_label=categories,
            yerr=stdev,
            align="center",
            capsize=10)
    plt.ylabel("average cumulative rewards")
    plt.savefig(fout_name)