From be62f96bd3cb8cc77668f5c89ac9cffdbdcc8c10 Mon Sep 17 00:00:00 2001
From: Baptiste Bauvin <baptiste.bauvin@lis-lab.fr>
Date: Thu, 20 Feb 2020 16:07:30 +0100
Subject: [PATCH] Overwrite OVO decision fun

---
 .../utils/multiclass.py                       | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/multiview_platform/mono_multi_view_classifiers/utils/multiclass.py b/multiview_platform/mono_multi_view_classifiers/utils/multiclass.py
index e41f76ca..1cfeb23d 100644
--- a/multiview_platform/mono_multi_view_classifiers/utils/multiclass.py
+++ b/multiview_platform/mono_multi_view_classifiers/utils/multiclass.py
@@ -184,7 +184,24 @@ class OVRWrapper(MonoviewWrapper, OneVsRestClassifier):
 
 
 class OVOWrapper(MonoviewWrapper, OneVsOneClassifier):
-    pass
+    def decision_function(self, X):
+        # check_is_fitted(self)
+
+        indices = self.pairwise_indices_
+        if indices is None:
+            Xs = [X] * len(self.estimators_)
+        else:
+            Xs = [X[:, idx] for idx in indices]
+
+        predictions = np.vstack([est.predict(Xi)
+                                 for est, Xi in zip(self.estimators_, Xs)]).T
+        confidences = np.ones(predictions.shape)
+        Y = _ovr_decision_function(predictions,
+                                   confidences, len(self.classes_))
+        if self.n_classes_ == 2:
+            return Y[:, 1]
+        return Y
+
 
 
 # The following code is a mutliview adaptation of sklearns multiclass package
-- 
GitLab