From f05a664534c0877e4a2b26ab1775fcf0d3ccb090 Mon Sep 17 00:00:00 2001
From: DIANE <abderrahim.diane@cefe.cnrs.fr>
Date: Thu, 4 Apr 2024 09:59:03 +0200
Subject: [PATCH] performance metrics

---
 Class_Mod/Regression_metrics.py | 108 ++++++++++++++++++++++++++++++++
 1 file changed, 108 insertions(+)
 create mode 100644 Class_Mod/Regression_metrics.py

diff --git a/Class_Mod/Regression_metrics.py b/Class_Mod/Regression_metrics.py
new file mode 100644
index 0000000..748ad34
--- /dev/null
+++ b/Class_Mod/Regression_metrics.py
@@ -0,0 +1,108 @@
+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
+
-- 
GitLab