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