def test_check_estimator(): # tests that the estimator actually fails on "bad" estimators. # not a complete test of all checks, which are very extensive. # check that we have a set_params and can clone msg = "it does not implement a 'get_params' methods" assert_raises_regex(TypeError, msg, check_estimator, object) # check that we have a fit method msg = "object has no attribute 'fit'" assert_raises_regex(AttributeError, msg, check_estimator, BaseEstimator) # check that fit does input validation msg = "TypeError not raised by fit" assert_raises_regex(AssertionError, msg, check_estimator, BaseBadClassifier) # check that predict does input validation (doesn't accept dicts in input) msg = "Estimator doesn't check for NaN and inf in predict" assert_raises_regex(AssertionError, msg, check_estimator, NoCheckinPredict) # check for sparse matrix input handling msg = "Estimator type doesn't seem to fail gracefully on sparse data" # the check for sparse input handling prints to the stdout, # instead of raising an error, so as not to remove the original traceback. # that means we need to jump through some hoops to catch it. old_stdout = sys.stdout string_buffer = StringIO() sys.stdout = string_buffer try: check_estimator(NoSparseClassifier) except: pass finally: sys.stdout = old_stdout assert_true(msg in string_buffer.getvalue()) # doesn't error on actual estimator check_estimator(AdaBoostClassifier)
def test_sklearn_estimator(self): ''' Tests each regression / classification model by invoking extensive sklearn test suite ''' for estimator in ESTIMATORS: check_estimator(estimator)
def __test_estimator_checks(): try: from sklearn.utils.estimator_checks import check_estimator except ImportError: raise SkipTest("need scikit-learn 0.17+ for check_estimator()") check_estimator(MSTClustering)
def test_check_estimator_clones(): # check that check_estimator doesn't modify the estimator it receives from sklearn.datasets import load_iris iris = load_iris() for Estimator in [GaussianMixture, LinearRegression, RandomForestClassifier, NMF, SGDClassifier, MiniBatchKMeans]: with ignore_warnings(category=FutureWarning): # when 'est = SGDClassifier()' est = Estimator() set_checking_parameters(est) set_random_state(est) # without fitting old_hash = joblib.hash(est) check_estimator(est) assert_equal(old_hash, joblib.hash(est)) with ignore_warnings(category=FutureWarning): # when 'est = SGDClassifier()' est = Estimator() set_checking_parameters(est) set_random_state(est) # with fitting est.fit(iris.data + 10, iris.target) old_hash = joblib.hash(est) check_estimator(est) assert_equal(old_hash, joblib.hash(est))
def test_valid_estimator_syl(): """Test whether ovk.OVKRidge is a valid sklearn estimator.""" from sklearn import __version__ # Adding patch revision number causes crash if LooseVersion(__version__) >= LooseVersion('0.18'): check_estimator(ovk.OVKRidge) else: warn('sklearn\'s check_estimator seems to be broken in __version__ <=' ' 0.17.x... skipping')
def test_rca(self): def stable_init(self, num_dims=None, pca_comps=None, chunk_size=2, preprocessor=None): # this init makes RCA stable for scikit-learn examples. RCA_Supervised.__init__(self, num_chunks=2, num_dims=num_dims, pca_comps=pca_comps, chunk_size=chunk_size, preprocessor=preprocessor) dRCA.__init__ = stable_init check_estimator(dRCA)
def test_check_estimator_pairwise(): # check that check_estimator() works on estimator with _pairwise # kernel or metric # test precomputed kernel est = SVC(kernel='precomputed') check_estimator(est) # test precomputed metric est = KNeighborsRegressor(metric='precomputed') check_estimator(est)
def test_sdml(self): def stable_init(self, sparsity_param=0.01, num_labeled='deprecated', num_constraints=None, verbose=False, preprocessor=None): # this init makes SDML stable for scikit-learn examples. SDML_Supervised.__init__(self, sparsity_param=sparsity_param, num_labeled=num_labeled, num_constraints=num_constraints, verbose=verbose, preprocessor=preprocessor, balance_param=1e-5, use_cov=False) dSDML.__init__ = stable_init check_estimator(dSDML)
def _validate_estimator(self, default=None): """Check the value of alpha and beta and clustering algorithm. """ check_parameter(self.alpha, low=0, high=1, param_name='alpha', include_left=False, include_right=False) check_parameter(self.beta, low=1, param_name='beta', include_left=False) if self.clustering_estimator is not None: self.clustering_estimator_ = self.clustering_estimator else: self.clustering_estimator_ = default # make sure the base clustering algorithm is valid if self.clustering_estimator_ is None: raise ValueError("clustering algorithm cannot be None") if self.check_estimator: check_estimator(self.clustering_estimator_)
def _validate_estimator(self, default=None): """Check the estimator and the n_estimator attribute, set the `base_estimator_` attribute.""" if not isinstance(self.n_estimators, (numbers.Integral, np.integer)): raise ValueError("n_estimators must be an integer, " "got {0}.".format(type(self.n_estimators))) if self.n_estimators <= 0: raise ValueError("n_estimators must be greater than zero, " "got {0}.".format(self.n_estimators)) if self.base_estimator is not None: self.base_estimator_ = self.base_estimator else: self.base_estimator_ = default if self.base_estimator_ is None: raise ValueError("base_estimator cannot be None") # make sure estimator is consistent with sklearn if self.check_estimator: check_estimator(self.base_estimator_)
def test_check_estimator(): # tests that the estimator actually fails on "bad" estimators. # not a complete test of all checks, which are very extensive. # check that we have a set_params and can clone msg = "it does not implement a 'get_params' methods" assert_raises_regex(TypeError, msg, check_estimator, object) # check that we have a fit method msg = "object has no attribute 'fit'" assert_raises_regex(AttributeError, msg, check_estimator, BaseEstimator) # check that fit does input validation msg = "TypeError not raised" assert_raises_regex(AssertionError, msg, check_estimator, BaseBadClassifier) # check that sample_weights in fit accepts pandas.Series type try: from pandas import Series # noqa msg = ( "Estimator NoSampleWeightPandasSeriesType raises error if " "'sample_weight' parameter is of type pandas.Series" ) assert_raises_regex(ValueError, msg, check_estimator, NoSampleWeightPandasSeriesType) except ImportError: pass # check that predict does input validation (doesn't accept dicts in input) msg = "Estimator doesn't check for NaN and inf in predict" assert_raises_regex(AssertionError, msg, check_estimator, NoCheckinPredict) # check that estimator state does not change # at transform/predict/predict_proba time msg = "Estimator changes __dict__ during predict" assert_raises_regex(AssertionError, msg, check_estimator, ChangesDict) # check for sparse matrix input handling name = NoSparseClassifier.__name__ msg = "Estimator " + name + " doesn't seem to fail gracefully on sparse data" # the check for sparse input handling prints to the stdout, # instead of raising an error, so as not to remove the original traceback. # that means we need to jump through some hoops to catch it. old_stdout = sys.stdout string_buffer = StringIO() sys.stdout = string_buffer try: check_estimator(NoSparseClassifier) except: pass finally: sys.stdout = old_stdout assert_true(msg in string_buffer.getvalue()) # doesn't error on actual estimator check_estimator(AdaBoostClassifier) check_estimator(MultiTaskElasticNet)
def test_lsml(self): check_estimator(dLSML)
def test_mlkr(self): check_estimator(MLKR)
def test_nearmiss_sk_estimator(): """Test the sklearn estimator compatibility""" check_estimator(NearMiss)
def test_logistic_regression_estimators(): """[Utils] LogisticRegression: check estimators.""" if check_estimator is not None: check_estimator(LogisticRegression)
def test_common(): return check_estimator(TemplateEstimator)
def test_novelty_true_common_tests(): # the common tests are run for the default LOF (novelty=False). # here we run these common tests for LOF when novelty=True check_estimator(neighbors.LocalOutlierFactor(novelty=True))
def test_hdbscan_is_sklearn_estimator(): check_estimator(HDBSCAN)
def test_check_estimator(model): """Test if check_estimator works.""" check_estimator(model)
def test_estimator_spherical_k_means(): return check_estimator(SphericalKMeans)
def test_ols_estimators(): """[Utils] OLS: check estimators.""" if check_estimator is not None: check_estimator(OLS)
def test_init_mixin(): """[Utils] InitMixin: test mixin.""" if check_estimator is not None: check_estimator(TestMixin)
def test_scale_estimators(): """[Utils] Scale: check estimators""" if check_estimator is not None: check_estimator(Scale)
def test_cmaes(self): check_estimator(dCMAES)
def test_sklearn_integration(self): check_estimator(self.estimator_class())
def test_mmc(self): check_estimator(dMMC)
def test_check_estimators_voting_estimator(estimator): # FIXME: to be removed when meta-estimators can specified themselves # their testing parameters (for required parameters). check_estimator(estimator) check_no_attributes_set_in_init(estimator.__class__.__name__, estimator)
def test_sklearn_estimator_checks_transformer(): """Run the sklearn estimator validation checks on SymbolicTransformer""" check_estimator(SymbolicTransformer)
def test_check_estimator(): # tests that the estimator actually fails on "bad" estimators. # not a complete test of all checks, which are very extensive. # check that we have a set_params and can clone msg = "it does not implement a 'get_params' method" assert_raises_regex(TypeError, msg, check_estimator, object) assert_raises_regex(TypeError, msg, check_estimator, object()) # check that values returned by get_params match set_params msg = "get_params result does not match what was passed to set_params" assert_raises_regex(AssertionError, msg, check_estimator, ModifiesValueInsteadOfRaisingError()) assert_warns(UserWarning, check_estimator, RaisesErrorInSetParams()) assert_raises_regex(AssertionError, msg, check_estimator, ModifiesAnotherValue()) # check that we have a fit method msg = "object has no attribute 'fit'" assert_raises_regex(AttributeError, msg, check_estimator, BaseEstimator) assert_raises_regex(AttributeError, msg, check_estimator, BaseEstimator()) # check that fit does input validation msg = "ValueError not raised" assert_raises_regex(AssertionError, msg, check_estimator, BaseBadClassifier) assert_raises_regex(AssertionError, msg, check_estimator, BaseBadClassifier()) # check that sample_weights in fit accepts pandas.Series type try: from pandas import Series # noqa msg = ("Estimator NoSampleWeightPandasSeriesType raises error if " "'sample_weight' parameter is of type pandas.Series") assert_raises_regex(ValueError, msg, check_estimator, NoSampleWeightPandasSeriesType) except ImportError: pass # check that predict does input validation (doesn't accept dicts in input) msg = "Estimator doesn't check for NaN and inf in predict" assert_raises_regex(AssertionError, msg, check_estimator, NoCheckinPredict) assert_raises_regex(AssertionError, msg, check_estimator, NoCheckinPredict()) # check that estimator state does not change # at transform/predict/predict_proba time msg = 'Estimator changes __dict__ during predict' assert_raises_regex(AssertionError, msg, check_estimator, ChangesDict) # check that `fit` only changes attribures that # are private (start with an _ or end with a _). msg = ('Estimator ChangesWrongAttribute should not change or mutate ' 'the parameter wrong_attribute from 0 to 1 during fit.') assert_raises_regex(AssertionError, msg, check_estimator, ChangesWrongAttribute) check_estimator(ChangesUnderscoreAttribute) # check that `fit` doesn't add any public attribute msg = (r'Estimator adds public attribute\(s\) during the fit method.' ' Estimators are only allowed to add private attributes' ' either started with _ or ended' ' with _ but wrong_attribute added') assert_raises_regex(AssertionError, msg, check_estimator, SetsWrongAttribute) # check for invariant method name = NotInvariantPredict.__name__ method = 'predict' msg = ("{method} of {name} is not invariant when applied " "to a subset.").format(method=method, name=name) assert_raises_regex(AssertionError, msg, check_estimator, NotInvariantPredict) # check for sparse matrix input handling name = NoSparseClassifier.__name__ msg = "Estimator %s doesn't seem to fail gracefully on sparse data" % name # the check for sparse input handling prints to the stdout, # instead of raising an error, so as not to remove the original traceback. # that means we need to jump through some hoops to catch it. old_stdout = sys.stdout string_buffer = StringIO() sys.stdout = string_buffer try: check_estimator(NoSparseClassifier) except: pass finally: sys.stdout = old_stdout assert msg in string_buffer.getvalue() # Large indices test on bad estimator msg = ('Estimator LargeSparseNotSupportedClassifier doesn\'t seem to ' r'support \S{3}_64 matrix, and is not failing gracefully.*') assert_raises_regex(AssertionError, msg, check_estimator, LargeSparseNotSupportedClassifier) # does error on binary_only untagged estimator msg = 'Only 2 classes are supported' assert_raises_regex(ValueError, msg, check_estimator, UntaggedBinaryClassifier) # non-regression test for estimators transforming to sparse data check_estimator(SparseTransformer()) # doesn't error on actual estimator check_estimator(LogisticRegression) check_estimator(LogisticRegression(C=0.01)) check_estimator(MultiTaskElasticNet) check_estimator(MultiTaskElasticNet()) # doesn't error on binary_only tagged estimator check_estimator(TaggedBinaryClassifier) # Check regressor with requires_positive_y estimator tag msg = 'negative y values not supported!' assert_raises_regex(ValueError, msg, check_estimator, RequiresPositiveYRegressor)
def test_ncr_sk_estimator(): """Test the sklearn estimator compatibility""" check_estimator(NeighbourhoodCleaningRule)
def test_smote_sk_estimator(): """Test the sklearn estimator compatibility""" check_estimator(SMOTE)
def test_check_estimator(): # tests that the estimator actually fails on "bad" estimators. # not a complete test of all checks, which are very extensive. # check that we have a set_params and can clone msg = "it does not implement a 'get_params' methods" assert_raises_regex(TypeError, msg, check_estimator, object) assert_raises_regex(TypeError, msg, check_estimator, object()) # check that we have a fit method msg = "object has no attribute 'fit'" assert_raises_regex(AttributeError, msg, check_estimator, BaseEstimator) assert_raises_regex(AttributeError, msg, check_estimator, BaseEstimator()) # check that fit does input validation msg = "TypeError not raised" assert_raises_regex(AssertionError, msg, check_estimator, BaseBadClassifier) assert_raises_regex(AssertionError, msg, check_estimator, BaseBadClassifier()) # check that sample_weights in fit accepts pandas.Series type try: from pandas import Series # noqa msg = ("Estimator NoSampleWeightPandasSeriesType raises error if " "'sample_weight' parameter is of type pandas.Series") assert_raises_regex( ValueError, msg, check_estimator, NoSampleWeightPandasSeriesType) except ImportError: pass # check that predict does input validation (doesn't accept dicts in input) msg = "Estimator doesn't check for NaN and inf in predict" assert_raises_regex(AssertionError, msg, check_estimator, NoCheckinPredict) assert_raises_regex(AssertionError, msg, check_estimator, NoCheckinPredict()) # check that estimator state does not change # at transform/predict/predict_proba time msg = 'Estimator changes __dict__ during predict' assert_raises_regex(AssertionError, msg, check_estimator, ChangesDict) # check that `fit` only changes attribures that # are private (start with an _ or end with a _). msg = ('Estimator ChangesWrongAttribute should not change or mutate ' 'the parameter wrong_attribute from 0 to 1 during fit.') assert_raises_regex(AssertionError, msg, check_estimator, ChangesWrongAttribute) check_estimator(ChangesUnderscoreAttribute) # check that `fit` doesn't add any public attribute msg = ('Estimator adds public attribute\(s\) during the fit method.' ' Estimators are only allowed to add private attributes' ' either started with _ or ended' ' with _ but wrong_attribute added') assert_raises_regex(AssertionError, msg, check_estimator, SetsWrongAttribute) # check for invariant method name = NotInvariantPredict.__name__ method = 'predict' msg = ("{method} of {name} is not invariant when applied " "to a subset.").format(method=method, name=name) assert_raises_regex(AssertionError, msg, check_estimator, NotInvariantPredict) # check for sparse matrix input handling name = NoSparseClassifier.__name__ msg = "Estimator %s doesn't seem to fail gracefully on sparse data" % name # the check for sparse input handling prints to the stdout, # instead of raising an error, so as not to remove the original traceback. # that means we need to jump through some hoops to catch it. old_stdout = sys.stdout string_buffer = StringIO() sys.stdout = string_buffer try: check_estimator(NoSparseClassifier) except: pass finally: sys.stdout = old_stdout assert_true(msg in string_buffer.getvalue()) # doesn't error on actual estimator check_estimator(AdaBoostClassifier) check_estimator(AdaBoostClassifier()) check_estimator(MultiTaskElasticNet) check_estimator(MultiTaskElasticNet())
def test_estimator(): """Test HDP estimator""" return check_estimator(HierarchicalDirichletProcess)
def test_regressor(): lr = wrap(LinearRegression) check_estimator(lr) assert hasattr(lr, 'predict') assert hasattr(lr, 'score')
def test_enn_sk_estimator(): """Test the sklearn estimator compatibility""" check_estimator(RepeatedEditedNearestNeighbours)
def test_xfail_ignored_in_check_estimator(): # Make sure checks marked as xfail are just ignored and not run by # check_estimator(), but still raise a warning. with warnings.catch_warnings(record=True) as records: check_estimator(NuSVC()) assert SkipTestWarning in [rec.category for rec in records]
def test_check_estimator(): # tests that the estimator actually fails on "bad" estimators. # not a complete test of all checks, which are very extensive. # check that we have a set_params and can clone msg = "Passing a class was deprecated" with raises(TypeError, match=msg): check_estimator(object) msg = ( "Parameter 'p' of estimator 'HasMutableParameters' is of type " "object which is not allowed" ) # check that the "default_constructible" test checks for mutable parameters check_estimator(HasImmutableParameters()) # should pass with raises(AssertionError, match=msg): check_estimator(HasMutableParameters()) # check that values returned by get_params match set_params msg = "get_params result does not match what was passed to set_params" with raises(AssertionError, match=msg): check_estimator(ModifiesValueInsteadOfRaisingError()) assert_warns(UserWarning, check_estimator, RaisesErrorInSetParams()) with raises(AssertionError, match=msg): check_estimator(ModifiesAnotherValue()) # check that we have a fit method msg = "object has no attribute 'fit'" with raises(AttributeError, match=msg): check_estimator(BaseEstimator()) # check that fit does input validation msg = "Did not raise" with raises(AssertionError, match=msg): check_estimator(BaseBadClassifier()) # check that sample_weights in fit accepts pandas.Series type try: from pandas import Series # noqa msg = ( "Estimator NoSampleWeightPandasSeriesType raises error if " "'sample_weight' parameter is of type pandas.Series" ) with raises(ValueError, match=msg): check_estimator(NoSampleWeightPandasSeriesType()) except ImportError: pass # check that predict does input validation (doesn't accept dicts in input) msg = "Estimator doesn't check for NaN and inf in predict" with raises(AssertionError, match=msg): check_estimator(NoCheckinPredict()) # check that estimator state does not change # at transform/predict/predict_proba time msg = "Estimator changes __dict__ during predict" with raises(AssertionError, match=msg): check_estimator(ChangesDict()) # check that `fit` only changes attribures that # are private (start with an _ or end with a _). msg = ( "Estimator ChangesWrongAttribute should not change or mutate " "the parameter wrong_attribute from 0 to 1 during fit." ) with raises(AssertionError, match=msg): check_estimator(ChangesWrongAttribute()) check_estimator(ChangesUnderscoreAttribute()) # check that `fit` doesn't add any public attribute msg = ( r"Estimator adds public attribute\(s\) during the fit method." " Estimators are only allowed to add private attributes" " either started with _ or ended" " with _ but wrong_attribute added" ) with raises(AssertionError, match=msg): check_estimator(SetsWrongAttribute()) # check for sample order invariance name = NotInvariantSampleOrder.__name__ method = "predict" msg = ( "{method} of {name} is not invariant when applied to a dataset" "with different sample order." ).format(method=method, name=name) with raises(AssertionError, match=msg): check_estimator(NotInvariantSampleOrder()) # check for invariant method name = NotInvariantPredict.__name__ method = "predict" msg = ("{method} of {name} is not invariant when applied " "to a subset.").format( method=method, name=name ) with raises(AssertionError, match=msg): check_estimator(NotInvariantPredict()) # check for sparse matrix input handling name = NoSparseClassifier.__name__ msg = "Estimator %s doesn't seem to fail gracefully on sparse data" % name with raises(AssertionError, match=msg): check_estimator(NoSparseClassifier()) # Large indices test on bad estimator msg = ( "Estimator LargeSparseNotSupportedClassifier doesn't seem to " r"support \S{3}_64 matrix, and is not failing gracefully.*" ) with raises(AssertionError, match=msg): check_estimator(LargeSparseNotSupportedClassifier()) # does error on binary_only untagged estimator msg = "Only 2 classes are supported" with raises(ValueError, match=msg): check_estimator(UntaggedBinaryClassifier()) # non-regression test for estimators transforming to sparse data check_estimator(SparseTransformer()) # doesn't error on actual estimator check_estimator(LogisticRegression()) check_estimator(LogisticRegression(C=0.01)) check_estimator(MultiTaskElasticNet()) # doesn't error on binary_only tagged estimator check_estimator(TaggedBinaryClassifier()) # Check regressor with requires_positive_y estimator tag msg = "negative y values not supported!" with raises(ValueError, match=msg): check_estimator(RequiresPositiveYRegressor()) # Does not raise error on classifier with poor_score tag check_estimator(PoorScoreLogisticRegression())
def test_nca(self): check_estimator(NCA)
def test_check_estimator_transformer_no_mixin(): # check that TransformerMixin is not required for transformer tests to run with raises(AttributeError, ".*fit_transform.*"): check_estimator(BadTransformerWithoutMixin())
def test_itml(self): check_estimator(dITML)
def test_layer(): """[Module | LayerEnsemble] test pass estimator checks""" check_estimator(Tmp)
def test_jde(self): check_estimator(dJDE)
def test_check_estimator(self): # run VW through the sklearn estimator validation check # skip check until https://github.com/scikit-learn/scikit-learn/issues/16799 is closed return check_estimator(self.estimator())
def test_iht_sk_estimator(): """Test the sklearn estimator compatibility""" check_estimator(InstanceHardnessThreshold)
def test_check_estimator(self): self.assertIsNone(check_estimator(self.sut))
def test_estimator(): from sklearn.utils.estimator_checks import check_estimator check_estimator(FlexibleLinearRegression)
def test_all_estimators(Estimator): return check_estimator(Estimator)
def test_bc_sk_estimator(): """Test the sklearn estimator compatibility""" check_estimator(BalanceCascade)
def test_KNeighborsClassifier(self): check_estimator(KNeighborsClassifier(algorithm='kd_tree'))
def test_estimator_interface(self): estimator_checks.check_estimator(LogitNet)
def test_check_estimator(): # tests that the estimator actually fails on "bad" estimators. # not a complete test of all checks, which are very extensive. # check that we have a set_params and can clone msg = "it does not implement a 'get_params' methods" assert_raises_regex(TypeError, msg, check_estimator, object) assert_raises_regex(TypeError, msg, check_estimator, object()) # check that we have a fit method msg = "object has no attribute 'fit'" assert_raises_regex(AttributeError, msg, check_estimator, BaseEstimator) assert_raises_regex(AttributeError, msg, check_estimator, BaseEstimator()) # check that fit does input validation msg = "TypeError not raised" assert_raises_regex(AssertionError, msg, check_estimator, BaseBadClassifier) assert_raises_regex(AssertionError, msg, check_estimator, BaseBadClassifier()) # check that sample_weights in fit accepts pandas.Series type try: from pandas import Series # noqa msg = ("Estimator NoSampleWeightPandasSeriesType raises error if " "'sample_weight' parameter is of type pandas.Series") assert_raises_regex(ValueError, msg, check_estimator, NoSampleWeightPandasSeriesType) except ImportError: pass # check that predict does input validation (doesn't accept dicts in input) msg = "Estimator doesn't check for NaN and inf in predict" assert_raises_regex(AssertionError, msg, check_estimator, NoCheckinPredict) assert_raises_regex(AssertionError, msg, check_estimator, NoCheckinPredict()) # check that estimator state does not change # at transform/predict/predict_proba time msg = 'Estimator changes __dict__ during predict' assert_raises_regex(AssertionError, msg, check_estimator, ChangesDict) # check that `fit` only changes attribures that # are private (start with an _ or end with a _). msg = ('Estimator ChangesWrongAttribute should not change or mutate ' 'the parameter wrong_attribute from 0 to 1 during fit.') assert_raises_regex(AssertionError, msg, check_estimator, ChangesWrongAttribute) check_estimator(ChangesUnderscoreAttribute) # check that `fit` doesn't add any public attribute msg = (r'Estimator adds public attribute\(s\) during the fit method.' ' Estimators are only allowed to add private attributes' ' either started with _ or ended' ' with _ but wrong_attribute added') assert_raises_regex(AssertionError, msg, check_estimator, SetsWrongAttribute) # check for invariant method name = NotInvariantPredict.__name__ method = 'predict' msg = ("{method} of {name} is not invariant when applied " "to a subset.").format(method=method, name=name) assert_raises_regex(AssertionError, msg, check_estimator, NotInvariantPredict) # check for sparse matrix input handling name = NoSparseClassifier.__name__ msg = "Estimator %s doesn't seem to fail gracefully on sparse data" % name # the check for sparse input handling prints to the stdout, # instead of raising an error, so as not to remove the original traceback. # that means we need to jump through some hoops to catch it. old_stdout = sys.stdout string_buffer = StringIO() sys.stdout = string_buffer try: check_estimator(NoSparseClassifier) except: pass finally: sys.stdout = old_stdout assert_true(msg in string_buffer.getvalue()) # doesn't error on actual estimator check_estimator(AdaBoostClassifier) check_estimator(AdaBoostClassifier()) check_estimator(MultiTaskElasticNet) check_estimator(MultiTaskElasticNet())
def test_sklearn_estimator(self): check_estimator(self.clf)
def test_cnn_sk_estimator(): """Test the sklearn estimator compatibility""" check_estimator(CondensedNearestNeighbour)
def test_ros_sk_estimator(): """Test the sklearn estimator compatibility""" check_estimator(RandomOverSampler)
def test_GBTDAALClassifier(self): check_estimator(GBTDAALClassifier)
def test_check_estimator(): check_estimator(SingleBest)
def test_ada_sk_estimator(): """Test the sklearn estimator compatibility""" check_estimator(ADASYN)
def test_AdaBoostClassifier(self): check_estimator(AdaBoostClassifier)