Skip to content
Snippets Groups Projects
Regression_metrics.py 3.95 KiB
Newer Older
DIANE's avatar
DIANE committed
from Packages import *

def metrics(train, cv=None, test = None):

    C = pd.DataFrame()
    CV = pd.DataFrame()
    T = pd.DataFrame()

    if train is not None and cv is not None and test is not None:

        C["r"] = [np.corrcoef(train[0], train[1])[0, 1]]
        C["r2"] = [r2_score(train[0], train[1])]
        C["rmse"] = [np.sqrt(mean_squared_error(train[0], train[1]))]
        C["mae"] = [mean_absolute_error(train[0], train[1])]
        C.index = ['perf']
        METRICS = C

        CV["r"] = [np.corrcoef(cv[0], cv[1])[0, 1]]
        CV["r2"] = [r2_score(cv[0], cv[1])]
        CV["rmse"] = [np.sqrt(mean_squared_error(cv[0], cv[1]))]
        CV["mae"] = [mean_absolute_error(cv[0], cv[1])]
        CV.index = ['perf']

        T["r"] = [np.corrcoef(test[0], test[1])[0, 1]]
        T["r2"] = [r2_score(test[0], test[1])]
        T["rmse"] = [np.sqrt(mean_squared_error(test[0], test[1]))]
        T["mae"] = [mean_absolute_error(test[0], test[1])]
        T.index = ['perf']

        METRICS = pd.concat([C, CV, T], axis=1)

    elif train is not None and cv is not None and test is None:

        C["r"] = [np.corrcoef(train[0], train[1])[0, 1]]
        C["r2"] = [r2_score(train[0], train[1])]
        C["rmse"] = [np.sqrt(mean_squared_error(train[0], train[1]))]
        C["mae"] = [mean_absolute_error(train[0], train[1])]
        C.index = ['perf']

        CV["r"] = [np.corrcoef(cv[0], cv[1])[0, 1]]
        CV["r2"] = [r2_score(cv[0], cv[1])]
        CV["rmse"] = [np.sqrt(mean_squared_error(cv[0], cv[1]))]
        CV["mae"] = [mean_absolute_error(cv[0], cv[1])]
        CV.index = ['perf']

        METRICS = pd.concat([C, CV], axis=1)

    elif train is not None and cv is None and test is not None:

        C["r"] = [np.corrcoef(train[0], train[1])[0, 1]]
        C["r2"] = [r2_score(train[0], train[1])]
        C["rmse"] = [np.sqrt(mean_squared_error(train[0], train[1]))]
        C["mae"] = [mean_absolute_error(train[0], train[1])]
        C.index = ['perf']

        T["r"] = [np.corrcoef(test[0], test[1])[0, 1]]
        T["r2"] = [r2_score(test[0], test[1])]
        T["rmse"] = [np.sqrt(mean_squared_error(test[0], test[1]))]
        T["mae"] = [mean_absolute_error(test[0], test[1])]
        T.index = ['perf']
        METRICS = pd.concat([C, T], axis=1)

    elif train is None and cv is not None and test is not None:

        CV["r"] = [np.corrcoef(cv[0], cv[1])[0, 1]]
        CV["r2"] = [r2_score(cv[0], cv[1])]
        CV["rmse"] = [np.sqrt(mean_squared_error(cv[0], cv[1]))]
        CV["mae"] = [mean_absolute_error(cv[0], cv[1])]
        CV.index = ['perf']

        T["r"] = [np.corrcoef(test[0], test[1])[0, 1]]
        T["r2"] = [r2_score(test[0], test[1])]
        T["rmse"] = [np.sqrt(mean_squared_error(test[0], test[1]))]
        T["mae"] = [mean_absolute_error(test[0], test[1])]
        T.index = ['perf']

        METRICS = pd.concat([CV, T], axis=1)

    elif train is not None and cv is None and test is None:
        C["r"] = [np.corrcoef(train[0], train[1])[0, 1]]
        C["r2"] = [r2_score(train[0], train[1])]
        C["rmse"] = [np.sqrt(mean_squared_error(train[0], train[1]))]
        C["mae"] = [mean_absolute_error(train[0], train[1])]
        C.index = ['perf']
        METRICS = C

    if train is None and cv is not None and test is None:

        CV["r"] = [np.corrcoef(cv[0], cv[1])[0, 1]]
        CV["r2"] = [r2_score(cv[0], cv[1])]
        CV["rmse"] = [np.sqrt(mean_squared_error(cv[0], cv[1]))]
        CV["mae"] = [mean_absolute_error(cv[0], cv[1])]
        CV.index = ['perf']

        METRICS = CV

    if train is None and cv is None and test is not None:

        T["r"] = [np.corrcoef(test[0], test[1])[0, 1]]
        T["r2"] = [r2_score(test[0], test[1])]
        T["rmse"] = [np.sqrt(mean_squared_error(test[0], test[1]))]
        T["mae"] = [mean_absolute_error(test[0], test[1])]
        T.index = ['perf']

        METRICS = T

    return METRICS