Skip to content
Snippets Groups Projects
eval_regress_rr.py 1.71 KiB
Newer Older
Raymond Chia's avatar
Raymond Chia committed
import ipdb
from os.path import join,exists
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

from config import DATA_DIR

def load_eval_file():
    parent_directory = join(DATA_DIR, 'subject_specific')
    eval_history_file = join(parent_directory, 'eval_history.csv')

    assert exists(eval_history_file), "Evaluation file does not exist"

    return pd.read_csv(eval_history_file)

if __name__ == '__main__':
    mdl_str       = 'linreg'
    do_minirocket = True
    use_tsfresh   = False

    df = load_eval_file()

    mask = ((df['mdl_str'] == mdl_str) &\
            (df['do_minirocket'] == do_minirocket) &\
            (df['use_tsfresh'] == use_tsfresh))
    data = df[mask]
    subjects = data['subject'].unique()

    fig, axs = plt.subplots(2, 1)

    for subject in subjects:
        c = (int(subject[1:])-12)/(30-12)
        print(int(subject[1:]))
        print(c)
        mask = data['subject'] == subject
        x = data[mask]['train_len'].values
        y0 = data[mask]['pearsonr_coeff'].values
        y1 = data[mask]['mae'].values
        axs[0].scatter(x, y0, c=[c]*len(x), vmin=0, vmax=1, cmap='hsv')
        axs[1].scatter(x, y1, c=[c]*len(x), vmin=0, vmax=1, cmap='hsv')

    axs[0].axhline(color='k', alpha=0.3)
    axs[0].set_ylabel('pearson coeff', fontsize=12)
    axs[1].set_ylabel('mae', fontsize=12)
    axs[1].set_xlabel("training minutes", fontsize=12)

    axs[0].set_xticks(range(1, 6))
    axs[1].set_xticks(range(1, 6))

    axs[0].tick_params(axis='x', labelsize=12)
    axs[1].tick_params(axis='x', labelsize=12)
    axs[0].tick_params(axis='y', labelsize=12)
    axs[1].tick_params(axis='y', labelsize=12)
    fig.suptitle(f"{mdl_str} with minirocket features", fontsize=12)
    plt.show()