diff --git a/pyod/models/copod.py b/pyod/models/copod.py index 3d357fd66..1877bd902 100644 --- a/pyod/models/copod.py +++ b/pyod/models/copod.py @@ -136,7 +136,10 @@ def decision_function(self, X): skewness = np.sign(skew(X, axis=0)) self.U_skew = self.U_l * -1 * np.sign( skewness - 1) + self.U_r * np.sign(skewness + 1) - self.O = np.maximum(self.U_skew, np.add(self.U_l, self.U_r) / 2) + + self.O = np.maximum(self.U_l, self.U_r) + self.O = np.maximum(self.U_skew, self.O) + if hasattr(self, 'X_train'): decision_scores_ = self.O.sum(axis=1)[-original_size:] else: @@ -195,7 +198,10 @@ def _decision_function_parallel(self, X): skewness = np.sign(skew(X, axis=0)) self.U_skew = self.U_l * -1 * np.sign( skewness - 1) + self.U_r * np.sign(skewness + 1) - self.O = np.maximum(self.U_skew, np.add(self.U_l, self.U_r) / 2) + + self.O = np.maximum(self.U_l, self.U_r) + self.O = np.maximum(self.U_skew, self.O) + if hasattr(self, 'X_train'): decision_scores_ = self.O.sum(axis=1)[-original_size:] else: diff --git a/pyod/models/ecod.py b/pyod/models/ecod.py index fe278b454..00ade951a 100644 --- a/pyod/models/ecod.py +++ b/pyod/models/ecod.py @@ -138,10 +138,7 @@ def decision_function(self, X): skewness = np.sign(skew(X, axis=0)) self.U_skew = self.U_l * -1 * np.sign( skewness - 1) + self.U_r * np.sign(skewness + 1) - - self.O = np.maximum(self.U_l, self.U_r) - self.O = np.maximum(self.U_skew, self.O) - + self.O = np.maximum(self.U_skew, np.add(self.U_l, self.U_r) / 2) if hasattr(self, 'X_train'): decision_scores_ = self.O.sum(axis=1)[-original_size:] else: @@ -200,10 +197,7 @@ def _decision_function_parallel(self, X): skewness = np.sign(skew(X, axis=0)) self.U_skew = self.U_l * -1 * np.sign( skewness - 1) + self.U_r * np.sign(skewness + 1) - - self.O = np.maximum(self.U_l, self.U_r) - self.O = np.maximum(self.U_skew, self.O) - + self.O = np.maximum(self.U_skew, np.add(self.U_l, self.U_r) / 2) if hasattr(self, 'X_train'): decision_scores_ = self.O.sum(axis=1)[-original_size:] else: