imblearn/utils/_validation.py

Killed 35 out of 81 mutants

Survived

Survived mutation testing. These mutants show holes in your test suite.

Mutant 347

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -20,7 +20,7 @@
 from ..exceptions import raise_isinstance_error
 
 SAMPLING_KIND = (
-    "over-sampling",
+    "XXover-samplingXX",
     "under-sampling",
     "clean-sampling",
     "ensemble",

Mutant 348

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -26,7 +26,7 @@
     "ensemble",
     "bypass",
 )
-TARGET_KIND = ("binary", "multiclass", "multilabel-indicator")
+TARGET_KIND = ("XXbinaryXX", "multiclass", "multilabel-indicator")
 
 
 class ArraysTransformer:

Mutant 349

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -26,7 +26,7 @@
     "ensemble",
     "bypass",
 )
-TARGET_KIND = ("binary", "multiclass", "multilabel-indicator")
+TARGET_KIND = ("binary", "XXmulticlassXX", "multilabel-indicator")
 
 
 class ArraysTransformer:

Mutant 350

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -26,7 +26,7 @@
     "ensemble",
     "bypass",
 )
-TARGET_KIND = ("binary", "multiclass", "multilabel-indicator")
+TARGET_KIND = ("binary", "multiclass", "XXmultilabel-indicatorXX")
 
 
 class ArraysTransformer:

Mutant 351

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -26,7 +26,7 @@
     "ensemble",
     "bypass",
 )
-TARGET_KIND = ("binary", "multiclass", "multilabel-indicator")
+TARGET_KIND = None
 
 
 class ArraysTransformer:

Mutant 359

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -44,7 +44,7 @@
     def _gets_props(self, array):
         props = {}
         props["type"] = array.__class__.__name__
-        props["columns"] = getattr(array, "columns", None)
+        props["XXcolumnsXX"] = getattr(array, "columns", None)
         props["name"] = getattr(array, "name", None)
         props["dtypes"] = getattr(array, "dtypes", None)
         return props

Mutant 360

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -44,7 +44,7 @@
     def _gets_props(self, array):
         props = {}
         props["type"] = array.__class__.__name__
-        props["columns"] = getattr(array, "columns", None)
+        props["columns"] = getattr(array, "XXcolumnsXX", None)
         props["name"] = getattr(array, "name", None)
         props["dtypes"] = getattr(array, "dtypes", None)
         return props

Mutant 361

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -44,7 +44,7 @@
     def _gets_props(self, array):
         props = {}
         props["type"] = array.__class__.__name__
-        props["columns"] = getattr(array, "columns", None)
+        props["columns"] = None
         props["name"] = getattr(array, "name", None)
         props["dtypes"] = getattr(array, "dtypes", None)
         return props

Mutant 362

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -45,7 +45,7 @@
         props = {}
         props["type"] = array.__class__.__name__
         props["columns"] = getattr(array, "columns", None)
-        props["name"] = getattr(array, "name", None)
+        props["XXnameXX"] = getattr(array, "name", None)
         props["dtypes"] = getattr(array, "dtypes", None)
         return props
 

Mutant 363

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -45,7 +45,7 @@
         props = {}
         props["type"] = array.__class__.__name__
         props["columns"] = getattr(array, "columns", None)
-        props["name"] = getattr(array, "name", None)
+        props["name"] = getattr(array, "XXnameXX", None)
         props["dtypes"] = getattr(array, "dtypes", None)
         return props
 

Mutant 364

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -45,7 +45,7 @@
         props = {}
         props["type"] = array.__class__.__name__
         props["columns"] = getattr(array, "columns", None)
-        props["name"] = getattr(array, "name", None)
+        props["name"] = None
         props["dtypes"] = getattr(array, "dtypes", None)
         return props
 

Mutant 365

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -46,7 +46,7 @@
         props["type"] = array.__class__.__name__
         props["columns"] = getattr(array, "columns", None)
         props["name"] = getattr(array, "name", None)
-        props["dtypes"] = getattr(array, "dtypes", None)
+        props["XXdtypesXX"] = getattr(array, "dtypes", None)
         return props
 
     def _transfrom_one(self, array, props):

Mutant 366

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -46,7 +46,7 @@
         props["type"] = array.__class__.__name__
         props["columns"] = getattr(array, "columns", None)
         props["name"] = getattr(array, "name", None)
-        props["dtypes"] = getattr(array, "dtypes", None)
+        props["dtypes"] = getattr(array, "XXdtypesXX", None)
         return props
 
     def _transfrom_one(self, array, props):

Mutant 367

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -46,7 +46,7 @@
         props["type"] = array.__class__.__name__
         props["columns"] = getattr(array, "columns", None)
         props["name"] = getattr(array, "name", None)
-        props["dtypes"] = getattr(array, "dtypes", None)
+        props["dtypes"] = None
         return props
 
     def _transfrom_one(self, array, props):

Mutant 369

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -50,7 +50,7 @@
         return props
 
     def _transfrom_one(self, array, props):
-        type_ = props["type"].lower()
+        type_ = None
         if type_ == "list":
             ret = array.tolist()
         elif type_ == "dataframe":

Mutant 371

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -51,7 +51,7 @@
 
     def _transfrom_one(self, array, props):
         type_ = props["type"].lower()
-        if type_ == "list":
+        if type_ == "XXlistXX":
             ret = array.tolist()
         elif type_ == "dataframe":
             import pandas as pd

Mutant 373

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -53,7 +53,7 @@
         type_ = props["type"].lower()
         if type_ == "list":
             ret = array.tolist()
-        elif type_ == "dataframe":
+        elif type_ == "XXdataframeXX":
             import pandas as pd
             ret = pd.DataFrame(array, columns=props["columns"])
             ret = ret.astype(props["dtypes"])

Mutant 375

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -57,7 +57,7 @@
             import pandas as pd
             ret = pd.DataFrame(array, columns=props["columns"])
             ret = ret.astype(props["dtypes"])
-        elif type_ == "series":
+        elif type_ == "XXseriesXX":
             import pandas as pd
             ret = pd.Series(array, dtype=props["dtypes"], name=props["name"])
         else:

Mutant 377

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -65,7 +65,7 @@
         return ret
 
 
-def check_neighbors_object(nn_name, nn_object, additional_neighbor=0):
+def check_neighbors_object(nn_name, nn_object, additional_neighbor=1):
     """Check the objects is consistent to be a NN.
 
     Several methods in imblearn relies on NN. Until version 0.4, these

Mutant 380

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -102,7 +102,7 @@
     return dict(zip(unique, counts))
 
 
-def check_target_type(y, indicate_one_vs_all=False):
+def check_target_type(y, indicate_one_vs_all=True):
     """Check the target types to be conform to the current samplers.
 
     The current samplers should be compatible with ``'binary'``,

Mutant 381

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -126,7 +126,7 @@
         Only returned if ``indicate_multilabel=True``.
 
     """
-    type_y = type_of_target(y)
+    type_y = None
     if type_y == "multilabel-indicator":
         if np.any(y.sum(axis=1) > 1):
             raise ValueError(

Mutant 383

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -127,7 +127,7 @@
 
     """
     type_y = type_of_target(y)
-    if type_y == "multilabel-indicator":
+    if type_y == "XXmultilabel-indicatorXX":
         if np.any(y.sum(axis=1) > 1):
             raise ValueError(
                 "Imbalanced-learn currently supports binary, multiclass and "

Mutant 386

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -138,7 +138,7 @@
     else:
         y = column_or_1d(y)
 
-    return (y, type_y == "multilabel-indicator") if indicate_one_vs_all else y
+    return (y, type_y == "XXmultilabel-indicatorXX") if indicate_one_vs_all else y
 
 
 def _sampling_strategy_all(y, sampling_type):

Mutant 389

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -219,7 +219,7 @@
     """Returns sampling target by targeting all classes but not the
     minority."""
     target_stats = _count_class_sample(y)
-    if sampling_type == "over-sampling":
+    if sampling_type == "XXover-samplingXX":
         n_sample_majority = max(target_stats.values())
         class_minority = min(target_stats, key=target_stats.get)
         sampling_strategy = {

Mutant 392

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -228,7 +228,7 @@
             if key != class_minority
         }
     elif (
-        sampling_type == "under-sampling" or sampling_type == "clean-sampling"
+        sampling_type == "under-sampling" or sampling_type != "clean-sampling"
     ):
         n_sample_minority = min(target_stats.values())
         class_minority = min(target_stats, key=target_stats.get)

Mutant 393

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -228,7 +228,7 @@
             if key != class_minority
         }
     elif (
-        sampling_type == "under-sampling" or sampling_type == "clean-sampling"
+        sampling_type == "under-sampling" or sampling_type == "XXclean-samplingXX"
     ):
         n_sample_minority = min(target_stats.values())
         class_minority = min(target_stats, key=target_stats.get)

Mutant 396

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -231,7 +231,7 @@
         sampling_type == "under-sampling" or sampling_type == "clean-sampling"
     ):
         n_sample_minority = min(target_stats.values())
-        class_minority = min(target_stats, key=target_stats.get)
+        class_minority = None
         sampling_strategy = {
             key: n_sample_minority
             for key in target_stats.keys()

Mutant 397

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -235,7 +235,7 @@
         sampling_strategy = {
             key: n_sample_minority
             for key in target_stats.keys()
-            if key != class_minority
+            if key == class_minority
         }
     else:
         raise NotImplementedError

Mutant 398

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -270,7 +270,7 @@
 def _sampling_strategy_auto(y, sampling_type):
     """Returns sampling target auto for over-sampling and not-minority for
     under-sampling."""
-    if sampling_type == "over-sampling":
+    if sampling_type != "over-sampling":
         return _sampling_strategy_not_majority(y, sampling_type)
     elif (
         sampling_type == "under-sampling" or sampling_type == "clean-sampling"

Mutant 399

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -270,7 +270,7 @@
 def _sampling_strategy_auto(y, sampling_type):
     """Returns sampling target auto for over-sampling and not-minority for
     under-sampling."""
-    if sampling_type == "over-sampling":
+    if sampling_type == "XXover-samplingXX":
         return _sampling_strategy_not_majority(y, sampling_type)
     elif (
         sampling_type == "under-sampling" or sampling_type == "clean-sampling"

Mutant 402

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -273,7 +273,7 @@
     if sampling_type == "over-sampling":
         return _sampling_strategy_not_majority(y, sampling_type)
     elif (
-        sampling_type == "under-sampling" or sampling_type == "clean-sampling"
+        sampling_type == "under-sampling" or sampling_type != "clean-sampling"
     ):
         return _sampling_strategy_not_minority(y, sampling_type)
 

Mutant 403

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -273,7 +273,7 @@
     if sampling_type == "over-sampling":
         return _sampling_strategy_not_majority(y, sampling_type)
     elif (
-        sampling_type == "under-sampling" or sampling_type == "clean-sampling"
+        sampling_type == "under-sampling" or sampling_type == "XXclean-samplingXX"
     ):
         return _sampling_strategy_not_minority(y, sampling_type)
 

Mutant 406

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -527,7 +527,7 @@
             " instead.".format(SAMPLING_KIND, sampling_type)
         )
 
-    if np.unique(y).size <= 1:
+    if np.unique(y).size < 1:
         raise ValueError(
             "The target 'y' needs to have more than 1 class."
             " Got {} class instead".format(np.unique(y).size)

Mutant 407

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -527,7 +527,7 @@
             " instead.".format(SAMPLING_KIND, sampling_type)
         )
 
-    if np.unique(y).size <= 1:
+    if np.unique(y).size <= 2:
         raise ValueError(
             "The target 'y' needs to have more than 1 class."
             " Got {} class instead".format(np.unique(y).size)

Mutant 409

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -533,7 +533,7 @@
             " Got {} class instead".format(np.unique(y).size)
         )
 
-    if sampling_type in ("ensemble", "bypass"):
+    if sampling_type in ("XXensembleXX", "bypass"):
         return sampling_strategy
 
     if isinstance(sampling_strategy, str):

Mutant 410

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -533,7 +533,7 @@
             " Got {} class instead".format(np.unique(y).size)
         )
 
-    if sampling_type in ("ensemble", "bypass"):
+    if sampling_type in ("ensemble", "XXbypassXX"):
         return sampling_strategy
 
     if isinstance(sampling_strategy, str):

Mutant 412

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -594,7 +594,7 @@
 
 
 SAMPLING_TARGET_KIND = {
-    "minority": _sampling_strategy_minority,
+    "XXminorityXX": _sampling_strategy_minority,
     "majority": _sampling_strategy_majority,
     "not minority": _sampling_strategy_not_minority,
     "not majority": _sampling_strategy_not_majority,

Mutant 413

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -595,7 +595,7 @@
 
 SAMPLING_TARGET_KIND = {
     "minority": _sampling_strategy_minority,
-    "majority": _sampling_strategy_majority,
+    "XXmajorityXX": _sampling_strategy_majority,
     "not minority": _sampling_strategy_not_minority,
     "not majority": _sampling_strategy_not_majority,
     "all": _sampling_strategy_all,

Mutant 414

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -596,7 +596,7 @@
 SAMPLING_TARGET_KIND = {
     "minority": _sampling_strategy_minority,
     "majority": _sampling_strategy_majority,
-    "not minority": _sampling_strategy_not_minority,
+    "XXnot minorityXX": _sampling_strategy_not_minority,
     "not majority": _sampling_strategy_not_majority,
     "all": _sampling_strategy_all,
     "auto": _sampling_strategy_auto,

Mutant 415

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -597,7 +597,7 @@
     "minority": _sampling_strategy_minority,
     "majority": _sampling_strategy_majority,
     "not minority": _sampling_strategy_not_minority,
-    "not majority": _sampling_strategy_not_majority,
+    "XXnot majorityXX": _sampling_strategy_not_majority,
     "all": _sampling_strategy_all,
     "auto": _sampling_strategy_auto,
 }

Mutant 416

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -598,7 +598,7 @@
     "majority": _sampling_strategy_majority,
     "not minority": _sampling_strategy_not_minority,
     "not majority": _sampling_strategy_not_majority,
-    "all": _sampling_strategy_all,
+    "XXallXX": _sampling_strategy_all,
     "auto": _sampling_strategy_auto,
 }
 

Mutant 421

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -619,7 +619,7 @@
     all_args = []
 
     for name, param in sig.parameters.items():
-        if param.kind == Parameter.POSITIONAL_OR_KEYWORD:
+        if param.kind != Parameter.POSITIONAL_OR_KEYWORD:
             all_args.append(name)
         elif param.kind == Parameter.KEYWORD_ONLY:
             kwonly_args.append(name)

Mutant 422

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -621,7 +621,7 @@
     for name, param in sig.parameters.items():
         if param.kind == Parameter.POSITIONAL_OR_KEYWORD:
             all_args.append(name)
-        elif param.kind == Parameter.KEYWORD_ONLY:
+        elif param.kind != Parameter.KEYWORD_ONLY:
             kwonly_args.append(name)
 
     @wraps(f)

Mutant 424

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -626,7 +626,7 @@
 
     @wraps(f)
     def inner_f(*args, **kwargs):
-        extra_args = len(args) - len(all_args)
+        extra_args = len(args) + len(all_args)
         if extra_args > 0:
             # ignore first 'self' argument for instance methods
             args_msg = ['{}={}'.format(name, arg)

Mutant 426

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -627,7 +627,7 @@
     @wraps(f)
     def inner_f(*args, **kwargs):
         extra_args = len(args) - len(all_args)
-        if extra_args > 0:
+        if extra_args >= 0:
             # ignore first 'self' argument for instance methods
             args_msg = ['{}={}'.format(name, arg)
                         for name, arg in zip(kwonly_args[:extra_args],

Mutant 427

--- imblearn/utils/_validation.py
+++ imblearn/utils/_validation.py
@@ -627,7 +627,7 @@
     @wraps(f)
     def inner_f(*args, **kwargs):
         extra_args = len(args) - len(all_args)
-        if extra_args > 0:
+        if extra_args > 1:
             # ignore first 'self' argument for instance methods
             args_msg = ['{}={}'.format(name, arg)
                         for name, arg in zip(kwonly_args[:extra_args],