示例#1
0
 def setUpClass(self):
     print("******* Unit Test for Keras *******")
     self.adapa_utility = AdapaUtility()
     self.data_utility = DataUtility()
     model = applications.MobileNet(weights='imagenet',
                                    include_top=False,
                                    input_shape=(224, 224, 3))
     activType = 'sigmoid'
     x = model.output
     x = Flatten()(x)
     x = Dense(1024, activation="relu")(x)
     predictions = Dense(2, activation=activType)(x)
     self.model_final = Model(inputs=model.input,
                              outputs=predictions,
                              name='predictions')
示例#2
0
 def setUpClass(self):
     print("******* Unit Test for Keras *******")
     self.adapa_utility = AdapaUtility()
     self.data_utility = DataUtility()
示例#3
0
class TestCases(unittest.TestCase):
    @classmethod
    def setUpClass(self):
        print("******* Unit Test for sklearn *******")
        self.data_utility = DataUtility()
        self.adapa_utility = AdapaUtility()

    def test_01_linear_regression(self):
        print("\ntest 01 (linear regression without preprocessing)\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_regression(
        )

        model = LinearRegression()
        pipeline_obj = Pipeline([("model", model)])
        pipeline_obj.fit(X, y)
        file_name = 'test01sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, _ = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)

    def test_02_linear_regression_with_scaler(self):
        print("\ntest 02 (linear regression with preprocessing)\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_regression(
        )

        model = LinearRegression()
        pipeline_obj = Pipeline([
            ("mapper",
             DataFrameMapper([(["sepal width (cm)"], StandardScaler()),
                              (["petal length (cm)",
                                "petal width (cm)"], None)])), ("model", model)
        ])
        pipeline_obj.fit(X, y)
        file_name = 'test02sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, _ = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)

    def test_03_logistic_regression_with_scaler(self):
        print(
            "\ntest 03 (logistic regression with preprocessing) [multi-class]\n"
        )
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_multi_class_classification(
        )

        model = LogisticRegression()
        pipeline_obj = Pipeline([
            ("mapper",
             DataFrameMapper([(["sepal length (cm)",
                                "sepal width (cm)"], MinMaxScaler()),
                              (["petal length (cm)",
                                "petal width (cm)"], None)])), ("model", model)
        ])
        pipeline_obj.fit(X, y)
        file_name = 'test03sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)
        self.assertEqual(
            self.adapa_utility.compare_probability(probabilities, model_prob),
            0)

    def test_04_logistic_regression_with_scaler(self):
        print(
            "\ntest 04 (logistic regression with preprocessing) [binary-class]\n"
        )
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_binary_classification(
        )

        model = LogisticRegression()
        pipeline_obj = Pipeline([
            ("mapper",
             DataFrameMapper([(["sepal length (cm)",
                                "sepal width (cm)"], MinMaxScaler()),
                              (["petal length (cm)",
                                "petal width (cm)"], None)])), ("model", model)
        ])
        pipeline_obj.fit(X, y)
        file_name = 'test04sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)
        self.assertEqual(
            self.adapa_utility.compare_probability(probabilities, model_prob),
            0)

    def test_05_logistic_regression(self):
        print(
            "\ntest 05 (logistic regression without preprocessing) [multi-class]\n"
        )
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_multi_class_classification(
        )

        model = LogisticRegression()
        pipeline_obj = Pipeline([("model", model)])
        pipeline_obj.fit(X, y)
        file_name = 'test05sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)
        self.assertEqual(
            self.adapa_utility.compare_probability(probabilities, model_prob),
            0)

    def test_06_logistic_regression(self):
        print(
            "\ntest 06 (logistic regression without preprocessing) [binary-class]\n"
        )
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_binary_classification(
        )

        model = LogisticRegression()
        pipeline_obj = Pipeline([("mapper",
                                  DataFrameMapper([(["test",
                                                     LabelBinarizer()])])),
                                 ("model", model)])
        pipeline_obj.fit(X, y)
        file_name = 'test06sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)
        self.assertEqual(
            self.adapa_utility.compare_probability(probabilities, model_prob),
            0)

    def test_07_ridge_classifier(self):
        print("\ntest 07 (Ridge Classifier) [multi-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_multi_class_classification(
        )

        model = RidgeClassifier()
        pipeline_obj = Pipeline([("model", model)])
        pipeline_obj.fit(X, y)
        file_name = 'test07sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = model._predict_proba_lr(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)
        self.assertEqual(
            self.adapa_utility.compare_probability(probabilities, model_prob),
            0)

    def test_08_ridge_classifier(self):
        print("\ntest 08 (Ridge Classifier) [binary-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_binary_classification(
        )

        model = RidgeClassifier()
        pipeline_obj = Pipeline([("model", model)])
        pipeline_obj.fit(X, y)
        file_name = 'test08sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = model._predict_proba_lr(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)
        self.assertEqual(
            self.adapa_utility.compare_probability(probabilities, model_prob),
            0)

    def test_09_sgd_classifier(self):
        print("\ntest 09 (SGD Classifier with preprocessing) [multi-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_multi_class_classification(
        )

        model = SGDClassifier(loss="log")
        pipeline_obj = Pipeline([("scaler", StandardScaler()),
                                 ("model", model)])
        pipeline_obj.fit(X, y)
        file_name = 'test09sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)
        self.assertEqual(
            self.adapa_utility.compare_probability(probabilities, model_prob),
            0)

    def test_10_sgd_classifier(self):
        print("\ntest 10 (SGD Classifier with preprocessing) [binary-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_binary_classification(
        )

        model = SGDClassifier(loss="log")
        pipeline_obj = Pipeline([("scaler", StandardScaler()),
                                 ("model", model)])
        pipeline_obj.fit(X, y)
        file_name = 'test10sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)
        self.assertEqual(
            self.adapa_utility.compare_probability(probabilities, model_prob),
            0)

    def test_11_lda(self):
        print("\ntest 11 (LDA with preprocessing) [multi-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_multi_class_classification(
        )

        model = LinearDiscriminantAnalysis()
        pipeline_obj = Pipeline([("scaler", MaxAbsScaler()), ("model", model)])
        pipeline_obj.fit(X, y)
        file_name = 'test11sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)
        self.assertEqual(
            self.adapa_utility.compare_probability(probabilities, model_prob),
            0)

    def test_12_lda(self):
        print("\ntest 12 (LDA with preprocessing) [binary-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_binary_classification(
        )

        model = LinearDiscriminantAnalysis()
        pipeline_obj = Pipeline([("scaler", StandardScaler()),
                                 ("model", model)])
        pipeline_obj.fit(X, y)
        file_name = 'test12sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)
        self.assertEqual(
            self.adapa_utility.compare_probability(probabilities, model_prob),
            0)

    def test_13_linearsvc(self):
        print("\ntest 13 (LinearSVC with preprocessing) [multi-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_multi_class_classification(
        )

        model = LinearSVC()
        pipeline_obj = Pipeline([("scaler", StandardScaler()),
                                 ("model", model)])
        pipeline_obj.fit(X, y)
        file_name = 'test13sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.decision_function(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)
        self.assertEqual(
            self.adapa_utility.compare_probability(probabilities, model_prob),
            0)

    def test_14_linearsvc(self):
        print("\ntest 14 (LinearSVC with preprocessing) [binary-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_binary_classification(
        )

        model = LinearSVC()
        pipeline_obj = Pipeline([("model", model)])
        pipeline_obj.fit(X, y)
        file_name = 'test14sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = model._predict_proba_lr(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)
        self.assertEqual(
            self.adapa_utility.compare_probability(probabilities, model_prob),
            0)

    def test_15_linearsvr(self):
        print("\ntest 15 (linear svr without preprocessing)\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_regression(
        )

        model = LinearSVR()
        pipeline_obj = Pipeline([("model", model)])
        pipeline_obj.fit(X, y)
        file_name = 'test15sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, _ = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)

    def test_16_linearsvr(self):
        print("\ntest 16 (linear svr with preprocessing)\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_regression(
        )

        model = LinearSVR()
        pipeline_obj = Pipeline([("scaler", MinMaxScaler()), ("model", model)])
        pipeline_obj.fit(X, y)
        file_name = 'test16sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, _ = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)

    def test_17_decisiontreeclassifier(self):
        print(
            "\ntest 17 (decision tree classifier with preprocessing) [multi-class]\n"
        )
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_multi_class_classification(
        )

        model = DecisionTreeClassifier()
        pipeline_obj = Pipeline([("scaler", Binarizer()), ("model", model)])
        pipeline_obj.fit(X, y)
        file_name = 'test17sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)
        self.assertEqual(
            self.adapa_utility.compare_probability(probabilities, model_prob),
            0)

    def test_18_decisiontreeclassifier(self):
        print(
            "\ntest 18 (decision tree classifier with preprocessing) [binary-class]\n"
        )
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_binary_classification(
        )

        model = DecisionTreeClassifier()
        pipeline_obj = Pipeline([("scaler", Binarizer()), ("model", model)])
        pipeline_obj.fit(X, y)
        file_name = 'test18sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)
        self.assertEqual(
            self.adapa_utility.compare_probability(probabilities, model_prob),
            0)

    def test_19_decisiontreeclassifier(self):
        print(
            "\ntest 19 (decision tree classifier without preprocessing) [multi-class]\n"
        )
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_multi_class_classification(
        )

        model = DecisionTreeClassifier()
        pipeline_obj = Pipeline([("model", model)])
        pipeline_obj.fit(X, y)
        file_name = 'test19sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)
        self.assertEqual(
            self.adapa_utility.compare_probability(probabilities, model_prob),
            0)

    def test_20_decisiontreeclassifier(self):
        print(
            "\ntest 20 (decision tree classifier without preprocessing) [binary-class]\n"
        )
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_binary_classification(
        )

        model = DecisionTreeClassifier()
        pipeline_obj = Pipeline([("model", model)])
        pipeline_obj.fit(X, y)
        file_name = 'test20sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)
        self.assertEqual(
            self.adapa_utility.compare_probability(probabilities, model_prob),
            0)

    def test_21_svr(self):
        print("\ntest 21 (SVR without preprocessing)\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_regression(
        )

        model = SVR()
        pipeline_obj = Pipeline([("model", model)])
        pipeline_obj.fit(X, y)
        file_name = 'test21sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, _ = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)

    def test_22_gaussian_nb(self):
        print("\ntest 22 (GaussianNB without preprocessing) [binary-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_binary_classification(
        )

        model = GaussianNB()
        pipeline_obj = Pipeline([("model", model)])
        pipeline_obj.fit(X, y)
        file_name = 'test22sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)
        self.assertEqual(
            self.adapa_utility.compare_probability(probabilities, model_prob),
            0)

    def test_23_gaussian_nb(self):
        print("\ntest 23 (GaussianNB without preprocessing) [multi-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_multi_class_classification(
        )

        model = GaussianNB()
        pipeline_obj = Pipeline([("model", model)])
        pipeline_obj.fit(X, y)
        file_name = 'test23sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)
        self.assertEqual(
            self.adapa_utility.compare_probability(probabilities, model_prob),
            0)

    def test_24_gaussian_nb(self):
        print("\ntest 24 (GaussianNB with preprocessing) [multi-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_multi_class_classification(
        )

        model = GaussianNB()
        pipeline_obj = Pipeline([('scaler', StandardScaler()),
                                 ("model", model)])
        pipeline_obj.fit(X, y)
        file_name = 'test24sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)
        self.assertEqual(
            self.adapa_utility.compare_probability(probabilities, model_prob),
            0)

    def test_25_random_forest_regressor(self):
        print("\ntest 25 (random forest regressor without preprocessing)\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_regression(
        )

        model = RandomForestRegressor()
        pipeline_obj = Pipeline([("model", model)])
        pipeline_obj.fit(X, y)
        file_name = 'test25sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, _ = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)

    def test_26_random_forest_classifier(self):
        print(
            "\ntest 26 (random forest classifier with preprocessing) [multi-class]\n"
        )
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_multi_class_classification(
        )

        model = RandomForestClassifier()
        pipeline_obj = Pipeline([('scaler', MinMaxScaler()), ("model", model)])
        pipeline_obj.fit(X, y)
        file_name = 'test26sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)
        self.assertEqual(
            self.adapa_utility.compare_probability(probabilities, model_prob),
            0)

    def test_27_random_forest_classifier(self):
        print(
            "\ntest 27 (random forest classifier with preprocessing) [binary-class]\n"
        )
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_binary_classification(
        )

        model = RandomForestClassifier()
        pipeline_obj = Pipeline([('scaler', MinMaxScaler()), ("model", model)])
        pipeline_obj.fit(X, y)
        file_name = 'test27sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)
        self.assertEqual(
            self.adapa_utility.compare_probability(probabilities, model_prob),
            0)

    def test_28_gradient_boosting_classifier(self):
        print(
            "\ntest 28 (gradient boosting classifier with preprocessing) [binary-class]\n"
        )
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_binary_classification(
        )

        model = GradientBoostingClassifier()
        pipeline_obj = Pipeline([('scaler', MinMaxScaler()), ("model", model)])
        pipeline_obj.fit(X, y)
        file_name = 'test28sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)
        self.assertEqual(
            self.adapa_utility.compare_probability(probabilities, model_prob),
            0)

    def test_29_gradient_boosting_classifier(self):
        print(
            "\ntest 29 (gradient boosting classifier with preprocessing) [multi-class]\n"
        )
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_multi_class_classification(
        )

        model = GradientBoostingClassifier()
        pipeline_obj = Pipeline([('scaler', MaxAbsScaler()), ("model", model)])
        pipeline_obj.fit(X, y)
        file_name = 'test29sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)
        self.assertEqual(
            self.adapa_utility.compare_probability(probabilities, model_prob),
            0)

    def test_30_gradient_boosting_regressor(self):
        print(
            "\ntest 30 (gradient boosting regressor without preprocessing)\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_regression(
        )

        model = GradientBoostingRegressor()
        pipeline_obj = Pipeline([("model", model)])
        pipeline_obj.fit(X, y)
        file_name = 'test30sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, _ = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)

    def test_31_knn_classifier(self):
        print(
            "\ntest 31 (knn classifier without preprocessing) [binary-class]\n"
        )
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_binary_classification(
        )

        model = KNeighborsClassifier()
        pipeline_obj = Pipeline([("model", model)])
        pipeline_obj.fit(X, y)
        file_name = 'test31sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)
        self.assertEqual(
            self.adapa_utility.compare_probability(probabilities, model_prob),
            0)

    def test_32_knn_classifier(self):
        print(
            "\ntest 32 (knn classifier without preprocessing) [multi-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_multi_class_classification(
        )

        model = KNeighborsClassifier()
        pipeline_obj = Pipeline([("model", model)])
        pipeline_obj.fit(X, y)
        file_name = 'test32sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)
        self.assertEqual(
            self.adapa_utility.compare_probability(probabilities, model_prob),
            0)

    def test_33_knn_regressor(self):
        print("\ntest 33 (knn regressor without preprocessing)\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_regression(
        )

        model = KNeighborsRegressor()
        pipeline_obj = Pipeline([("model", model)])
        pipeline_obj.fit(X, y)
        file_name = 'test33sklearn.pmml'

        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, _ = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)

    def test_34_kmeans(self):
        print("\ntest 34 (kmeans without preprocessing\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_multi_class_classification(
        )

        model = KMeans(n_clusters=2)
        pipeline_obj = Pipeline([("model", model)])
        pipeline_obj.fit(X, y)
        file_name = 'test34sklearn.pmml'
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(
            model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.transform(X_test)
        self.assertEqual(
            self.adapa_utility.compare_predictions(predictions, model_pred), 0)
        self.assertEqual(
            self.adapa_utility.compare_probability(probabilities, model_prob),
            0)

    @classmethod
    def tearDownClass(self):
        print("\n******* Finished *******\n")
class TestCases(unittest.TestCase):

    @classmethod
    def setUpClass(self):
        print("******* Unit Test for sklearn *******")
        self.data_utility = DataUtility()
        self.adapa_utility = AdapaUtility()

    def test_01_linear_regression(self):
        print("\ntest 01 (linear regression without preprocessing)\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_regression()

        model = LinearRegression()
        pipeline_obj = Pipeline([
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test01sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, _ = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)

    def test_02_linear_regression_with_scaler(self):
        print("\ntest 02 (linear regression with preprocessing)\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_regression()

        model = LinearRegression()
        pipeline_obj = Pipeline([
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test02sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, _ = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)

    def test_03_logistic_regression_with_scaler(self):
        print("\ntest 03 (logistic regression with preprocessing) [multi-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_multi_class_classification()

        model = LogisticRegression()
        pipeline_obj = Pipeline([
            ("mapper", DataFrameMapper([
                    (["sepal length (cm)", "sepal width (cm)"], MinMaxScaler()),
                    (["petal length (cm)", "petal width (cm)"], None)
                ])
            ),
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test03sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)
        self.assertEqual(self.adapa_utility.compare_probability(probabilities, model_prob), True)

    def test_04_logistic_regression_with_scaler(self):
        print("\ntest 04 (logistic regression with preprocessing) [binary-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_binary_classification()

        model = LogisticRegression()
        pipeline_obj = Pipeline([
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test04sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)
        self.assertEqual(self.adapa_utility.compare_probability(probabilities, model_prob), True)

    def test_05_logistic_regression(self):
        print("\ntest 05 (logistic regression without preprocessing) [multi-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_multi_class_classification()

        model = LogisticRegression()
        pipeline_obj = Pipeline([
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test05sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)
        self.assertEqual(self.adapa_utility.compare_probability(probabilities, model_prob), True)

    def test_06_logistic_regression(self):
        print("\ntest 06 (logistic regression without preprocessing) [binary-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_binary_classification()

        model = LogisticRegression()
        pipeline_obj = Pipeline([
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test06sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)
        self.assertEqual(self.adapa_utility.compare_probability(probabilities, model_prob), True)

    def test_07_ridge_classifier(self):
        print("\ntest 07 (Ridge Classifier) [multi-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_multi_class_classification()

        model = RidgeClassifier()
        pipeline_obj = Pipeline([
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test07sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = model._predict_proba_lr(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)
        self.assertEqual(self.adapa_utility.compare_probability(probabilities, model_prob), True)

    def test_08_ridge_classifier(self):
        print("\ntest 08 (Ridge Classifier) [binary-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_binary_classification()

        model = RidgeClassifier()
        pipeline_obj = Pipeline([
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test08sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = model._predict_proba_lr(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)
        self.assertEqual(self.adapa_utility.compare_probability(probabilities, model_prob), True)

    @unittest.skip("")
    def test_09_sgd_classifier(self):
        print("\ntest 09 (SGD Classifier with preprocessing) [multi-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_multi_class_classification()

        model = SGDClassifier(loss="log")
        pipeline_obj = Pipeline([
            ("scaler", StandardScaler()),
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test09sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)
        self.assertEqual(self.adapa_utility.compare_probability(probabilities, model_prob), True)

    def test_10_sgd_classifier(self):
        print("\ntest 10 (SGD Classifier with preprocessing) [binary-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_binary_classification()

        model = SGDClassifier(loss="log")
        pipeline_obj = Pipeline([
            ("scaler", StandardScaler()),
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test10sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)
        self.assertEqual(self.adapa_utility.compare_probability(probabilities, model_prob), True)

    def test_11_lda(self):
        print("\ntest 11 (LDA with preprocessing) [multi-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_multi_class_classification()

        model = LinearDiscriminantAnalysis()
        pipeline_obj = Pipeline([
            ("scaler", MaxAbsScaler()),
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test11sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)
        self.assertEqual(self.adapa_utility.compare_probability(probabilities, model_prob), True)

    def test_12_lda(self):
        print("\ntest 12 (LDA with preprocessing) [binary-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_binary_classification()

        model = LinearDiscriminantAnalysis()
        pipeline_obj = Pipeline([
            ("scaler", StandardScaler()),
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test12sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)
        self.assertEqual(self.adapa_utility.compare_probability(probabilities, model_prob), True)

    def test_13_linearsvc(self):
        print("\ntest 13 (LinearSVC with preprocessing) [multi-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_multi_class_classification()

        model = LinearSVC()
        pipeline_obj = Pipeline([
            ("scaler", StandardScaler()),
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test13sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.decision_function(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)
        self.assertEqual(self.adapa_utility.compare_probability(probabilities, model_prob), True)

    def test_14_linearsvc(self):
        print("\ntest 14 (LinearSVC with preprocessing) [binary-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_binary_classification()

        model = LinearSVC()
        pipeline_obj = Pipeline([
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test14sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = model._predict_proba_lr(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)
        self.assertEqual(self.adapa_utility.compare_probability(probabilities, model_prob), True)

    def test_15_linearsvr(self):
        print("\ntest 15 (linear svr without preprocessing)\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_regression()

        model = LinearSVR()
        pipeline_obj = Pipeline([
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test15sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, _ = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)

    def test_16_linearsvr(self):
        print("\ntest 16 (linear svr with preprocessing)\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_regression()

        model = LinearSVR()
        pipeline_obj = Pipeline([
            ("scaler", MinMaxScaler()),
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test16sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, _ = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)

    def test_17_decisiontreeclassifier(self):
        print("\ntest 17 (decision tree classifier with preprocessing) [multi-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_multi_class_classification()

        model = DecisionTreeClassifier()
        pipeline_obj = Pipeline([
            ("scaler", Binarizer()),
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test17sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)
        self.assertEqual(self.adapa_utility.compare_probability(probabilities, model_prob), True)

    def test_18_decisiontreeclassifier(self):
        print("\ntest 18 (decision tree classifier with preprocessing) [binary-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_binary_classification()

        model = DecisionTreeClassifier()
        pipeline_obj = Pipeline([
            ("scaler", Binarizer()),
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test18sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)
        self.assertEqual(self.adapa_utility.compare_probability(probabilities, model_prob), True)

    def test_19_decisiontreeclassifier(self):
        print("\ntest 19 (decision tree classifier without preprocessing) [multi-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_multi_class_classification()

        model = DecisionTreeClassifier()
        pipeline_obj = Pipeline([
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test19sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)
        self.assertEqual(self.adapa_utility.compare_probability(probabilities, model_prob), True)

    def test_20_decisiontreeclassifier(self):
        print("\ntest 20 (decision tree classifier without preprocessing) [binary-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_binary_classification()

        model = DecisionTreeClassifier()
        pipeline_obj = Pipeline([
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test20sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)
        self.assertEqual(self.adapa_utility.compare_probability(probabilities, model_prob), True)

    def test_21_svr(self):
        print("\ntest 21 (SVR without preprocessing)\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_regression()

        model = SVR()
        pipeline_obj = Pipeline([
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test21sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, _ = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)

    def test_22_gaussian_nb(self):
        print("\ntest 22 (GaussianNB without preprocessing) [binary-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_binary_classification()

        model = GaussianNB()
        pipeline_obj = Pipeline([
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test22sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)
        self.assertEqual(self.adapa_utility.compare_probability(probabilities, model_prob), True)

    def test_23_gaussian_nb(self):
        print("\ntest 23 (GaussianNB without preprocessing) [multi-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_multi_class_classification()

        model = GaussianNB()
        pipeline_obj = Pipeline([
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test23sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)
        self.assertEqual(self.adapa_utility.compare_probability(probabilities, model_prob), True)

    def test_24_gaussian_nb(self):
        print("\ntest 24 (GaussianNB with preprocessing) [multi-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_multi_class_classification()

        model = GaussianNB()
        pipeline_obj = Pipeline([
            ('scaler', StandardScaler()),
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test24sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)
        self.assertEqual(self.adapa_utility.compare_probability(probabilities, model_prob), True)

    @unittest.skip("")
    def test_25_random_forest_regressor(self):
        print("\ntest 25 (random forest regressor without preprocessing)\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_regression()

        model = RandomForestRegressor()
        pipeline_obj = Pipeline([
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test25sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, _ = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)

    @unittest.skip("")
    def test_26_random_forest_classifier(self):
        print("\ntest 26 (random forest classifier with preprocessing) [multi-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_multi_class_classification()

        model = RandomForestClassifier()
        pipeline_obj = Pipeline([
            ('scaler',MinMaxScaler()),
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test26sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)
        self.assertEqual(self.adapa_utility.compare_probability(probabilities, model_prob), True)

    @unittest.skip("")
    def test_27_random_forest_classifier(self):
        print("\ntest 27 (random forest classifier with preprocessing) [binary-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_binary_classification()

        model = RandomForestClassifier()
        pipeline_obj = Pipeline([
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test27sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)
        self.assertEqual(self.adapa_utility.compare_probability(probabilities, model_prob), True)


    def test_28_gradient_boosting_classifier(self):
        print("\ntest 28 (gradient boosting classifier with preprocessing) [binary-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_binary_classification()

        model = GradientBoostingClassifier()
        pipeline_obj = Pipeline([
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test28sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)
        self.assertEqual(self.adapa_utility.compare_probability(probabilities, model_prob), True)

    @unittest.skip("")
    def test_29_gradient_boosting_classifier(self):
        print("\ntest 29 (gradient boosting classifier with preprocessing) [multi-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_multi_class_classification()

        model = GradientBoostingClassifier()
        pipeline_obj = Pipeline([
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test29sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)
        self.assertEqual(self.adapa_utility.compare_probability(probabilities, model_prob), True)

    @unittest.skip("")
    def test_30_gradient_boosting_regressor(self):
        print("\ntest 30 (gradient boosting regressor without preprocessing)\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_regression()

        model = GradientBoostingRegressor()
        pipeline_obj = Pipeline([
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test30sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, _ = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)

    @unittest.skip("")
    def test_31_knn_classifier(self):
        print("\ntest 31 (knn classifier without preprocessing) [binary-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_binary_classification()

        model = KNeighborsClassifier()
        pipeline_obj = Pipeline([
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test31sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)
        self.assertEqual(self.adapa_utility.compare_probability(probabilities, model_prob), True)


    def test_32_knn_classifier(self):
        print("\ntest 32 (knn classifier without preprocessing) [multi-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_multi_class_classification()

        model = KNeighborsClassifier()
        pipeline_obj = Pipeline([
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test32sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)
        self.assertEqual(self.adapa_utility.compare_probability(probabilities, model_prob), True)


    def test_33_knn_regressor(self):
        print("\ntest 33 (knn regressor without preprocessing)\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_regression()

        model = KNeighborsRegressor()
        pipeline_obj = Pipeline([
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test33sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, _ = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)

    def test_34_kmeans(self):
        print("\ntest 34 (kmeans without preprocessing\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_multi_class_classification()

        model = KMeans(n_clusters=2)
        pipeline_obj = Pipeline([
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test34sklearn.pmml'
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.transform(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)
        self.assertEqual(self.adapa_utility.compare_probability(probabilities, model_prob), True)

    @unittest.skip("")
    def test_35_isolation_forest(self):
        print("\ntest 34 (Isolation Forest\n")
        detection_map = {
            'true': -1,
            'false': 1
        }
        X = numpy.array([
            [1,2,3,4],
            [2,1,3,4],
            [3,2,1,4],
            [3,2,4,1],
            [4,3,2,1],
            [2,4,3,1]
        ], dtype=numpy.float32)
        test_data = numpy.array([[0,4,0,7],[4,0,4,7]])
        features = ['a','b','c','d']
        model = IsolationForest(n_estimators=40,contamination=0)
        pipeline_obj = Pipeline([
            ("model", model)
        ])
        pipeline_obj.fit(X)
        file_name = 'test35sklearn.pmml'
        skl_to_pmml(pipeline_obj, features, '', file_name)
        model_pred = pipeline_obj.predict(test_data)
        model_scores = model.score_samples(test_data)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        z_predictions = self.adapa_utility.score_in_zserver(model_name,'nyoka/tests/test_forest.csv','ANOMALY')
        cnt = 0
        for idx, value in enumerate(z_predictions):
            score, is_anomaly = value.split(",")
            score = -1 * float(score)
            if "{:.6f}".format(score) != "{:.6f}".format(model_scores[idx]) or model_pred[idx] != detection_map[is_anomaly]:
                cnt += 1
        self.assertEqual(cnt,0)

    @unittest.skip("")
    def test_36_one_class_svm(self):
        print("\ntest 36 (One Class SVM\n")
        detection_map = {
            'true': -1,
            'false': 1
        }
        df = pd.read_csv("nyoka/tests/train_ocsvm.csv")
        df_test = pd.read_csv("nyoka/tests/test_ocsvm.csv")
        features = df.columns
        model = OneClassSVM(nu=0.1)
        pipeline_obj = Pipeline([
            ("model", model)
        ])
        pipeline_obj.fit(df)
        file_name = 'test36sklearn.pmml'
        skl_to_pmml(pipeline_obj, features, '', file_name)
        model_pred = pipeline_obj.predict(df_test)
        model_scores = pipeline_obj.decision_function(df_test)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        z_predictions = self.adapa_utility.score_in_zserver(model_name,'nyoka/tests/test_ocsvm.csv','ANOMALY')
        cnt = 0
        for idx, value in enumerate(z_predictions):
            score, is_anomaly = value.split(",")
            score = float(score)
            if "{:.6f}".format(score) != "{:.6f}".format(model_scores[idx]) or model_pred[idx] != detection_map[is_anomaly]:
                cnt += 1
        self.assertEqual(cnt,0)

    def test_37_mlp_regressor(self):
        print("\ntest 37 (mlp regressor without preprocessing)\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_regression()

        model = MLPRegressor()
        pipeline_obj = Pipeline([
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test37sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, _ = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)

    def test_38_mlp_classifier(self):
        print("\ntest 38 (mlp classifier without preprocessing)[multi-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_multi_class_classification()

        model = MLPClassifier()
        pipeline_obj = Pipeline([
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test38sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)
        self.assertEqual(self.adapa_utility.compare_probability(probabilities, model_prob), True)

    def test_39_mlp_classifier(self):
        print("\ntest 39 (mlp classifier without preprocessing)[binary-class]\n")
        X, X_test, y, features, target, test_file = self.data_utility.get_data_for_binary_classification()

        model = MLPClassifier()
        pipeline_obj = Pipeline([
            ("model", model)
        ])
        pipeline_obj.fit(X,y)
        file_name = 'test39sklearn.pmml'
        
        skl_to_pmml(pipeline_obj, features, target, file_name)
        model_name  = self.adapa_utility.upload_to_zserver(file_name)
        predictions, probabilities = self.adapa_utility.score_in_zserver(model_name, test_file)
        model_pred = pipeline_obj.predict(X_test)
        model_prob = pipeline_obj.predict_proba(X_test)
        self.assertEqual(self.adapa_utility.compare_predictions(predictions, model_pred), True)
        self.assertEqual(self.adapa_utility.compare_probability(probabilities, model_prob), True)


    @classmethod
    def tearDownClass(self):
        print("\n******* Finished *******\n")
 def setUpClass(cls):
     print("******* Unit Test for sklearn *******")
     cls.data_utility = DataUtility()
     cls.adapa_utility = AdapaUtility()