예제 #1
0
    def setUpClass(cls):
        np.random.seed(seed=1234)

        cls.sklearn_model = DecisionTreeClassifier()
        cls.classifier = ScikitlearnDecisionTreeClassifier(
            model=cls.sklearn_model)
        cls.classifier.fit(x=x_train, y=y_train)
    def setUpClass(cls):
        master_seed(seed=1234)
        super().setUpClass()

        cls.sklearn_model = DecisionTreeClassifier()
        cls.classifier = ScikitlearnDecisionTreeClassifier(model=cls.sklearn_model)
        cls.classifier.fit(x=cls.x_train_iris, y=cls.y_train_iris)
예제 #3
0
    def setUpClass(cls):
        np.random.seed(seed=1234)

        sklearn_model = DecisionTreeClassifier()
        cls.classifier = ScikitlearnDecisionTreeClassifier(model=sklearn_model)
        assert (type(cls.classifier) == type(
            SklearnClassifier(model=sklearn_model)))
        cls.classifier.fit(x=x_train, y=y_train)
    def test_classifier_type_check_fail_gradients(self):
        # Use a test classifier not providing gradients required by white-box attack
        classifier = ScikitlearnDecisionTreeClassifier(model=DecisionTreeClassifier())
        with self.assertRaises(TypeError) as context:
            _ = AdversarialPatch(classifier=classifier)

        self.assertIn('For `AdversarialPatch` classifier must be an instance of '
                      '`art.classifiers.classifier.ClassifierNeuralNetwork` and '
                      '`art.classifiers.classifier.ClassifierGradients`, the provided classifier is instance of '
                      '(<class \'art.classifiers.scikitlearn.ScikitlearnClassifier\'>,).', str(context.exception))
    def test_classifier_type_check_fail_gradients(self):
        # Use a test classifier not providing gradients required by white-box attack
        from art.classifiers.scikitlearn import ScikitlearnDecisionTreeClassifier
        from sklearn.tree import DecisionTreeClassifier

        classifier = ScikitlearnDecisionTreeClassifier(model=DecisionTreeClassifier())
        with self.assertRaises(TypeError) as context:
            _ = ElasticNet(classifier=classifier)

        self.assertIn('For `ElasticNet` classifier must be an instance of '
                      '`art.classifiers.classifier.ClassifierGradients`, the provided classifier is instance of '
                      '(<class \'art.classifiers.scikitlearn.ScikitlearnClassifier\'>,).', str(context.exception))
예제 #6
0
def backend_test_classifier_type_check_fail(attack, classifier_expected_list=[], classifier=None):
    # Use a useless test classifier to test basic classifier properties
    class ClassifierNoAPI:
        pass

    noAPIClassifier = ClassifierNoAPI
    _backend_test_classifier_list_type_check_fail(attack, noAPIClassifier, [Classifier])

    if len(classifier_expected_list) > 0:
        # Testing additional types of classifiers expected
        if classifier is None:
            if ClassifierGradients in classifier_expected_list or ClassifierNeuralNetwork in classifier_expected_list:
                # Use a test classifier not providing gradients required by white-box attack
                classifier = ScikitlearnDecisionTreeClassifier(model=DecisionTreeClassifier())
            else:
                raise Exception(
                    "a test classifier must be provided if classifiers other than "
                    "ClassifierGradients and ClassifierNeuralNetwork are expected"
                )

        _backend_test_classifier_list_type_check_fail(attack, classifier, classifier_expected_list)