Exemple #1
0
    def polynomial_expansion_test(self):

        polynomial_exp = PolynomialFeatures(degree=2, include_bias=False)
        polynomial_exp.mlinit(input_features='a',
                              output_features='poly')

        Xres = polynomial_exp.fit_transform(self.df[['a']])

        self.assertEqual(Xres[0][1], Xres[0][0] * Xres[0][0])

        polynomial_exp.serialize_to_bundle(self.tmp_dir, polynomial_exp.name)

        expected_model = {
          "op": "polynomial_expansion",
          "attributes": {
            "degree": {
              "type": "double",
              "value": 2
            }
          }
        }

        # Test model.json
        with open("{}/{}.node/model.json".format(self.tmp_dir, polynomial_exp.name)) as json_data:
            model = json.load(json_data)

        self.assertEqual(expected_model['attributes']['degree']['value'], model['attributes']['degree']['value'])
Exemple #2
0
    def polynomial_expansion_test(self):

        extract_features = ['a']
        feature_extractor = FeatureExtractor(
            input_scalars=['a'],
            output_vector='extracted_a_output',
            output_vector_items=["{}_out".format(x) for x in extract_features])

        polynomial_exp = PolynomialFeatures(degree=2, include_bias=False)
        polynomial_exp.mlinit(prior_tf=feature_extractor,
                              output_features='poly')

        Xres = polynomial_exp.fit_transform(self.df[['a']])

        self.assertEqual(Xres[0][1], Xres[0][0] * Xres[0][0])

        polynomial_exp.serialize_to_bundle(self.tmp_dir, polynomial_exp.name)

        expected_model = {
            "op": "sklearn_polynomial_expansion",
            "attributes": {
                "combinations": {
                    "string": "[x0,x0^2]"
                }
            }
        }

        # Test model.json
        with open("{}/{}.node/model.json".format(
                self.tmp_dir, polynomial_exp.name)) as json_data:
            model = json.load(json_data)

        self.assertEqual(expected_model['op'], model['op'])
        self.assertEqual(
            expected_model['attributes']['combinations']['string'],
            model['attributes']['combinations']['string'])

        # Test node.json
        with open("{}/{}.node/node.json".format(
                self.tmp_dir, polynomial_exp.name)) as json_data:
            node = json.load(json_data)

        self.assertEqual(polynomial_exp.name, node['name'])
        self.assertEqual(polynomial_exp.input_features,
                         node['shape']['inputs'][0]['name'])
        self.assertEqual(polynomial_exp.output_features,
                         node['shape']['outputs'][0]['name'])
Exemple #3
0
    def polynomial_expansion_deserializer_test(self):

        polynomial_exp = PolynomialFeatures(degree=2, include_bias=False)
        polynomial_exp.mlinit(
            input_features=['a', 'b'],
            output_features=['a', 'b', 'a_sqd', 'a_mult_b', 'b_sqd'])

        Xres = polynomial_exp.fit_transform(self.df[['a', 'b']])

        self.assertEqual(Xres[0][2], Xres[0][0] * Xres[0][0])

        polynomial_exp.serialize_to_bundle(self.tmp_dir, polynomial_exp.name)

        # Deserialize the PolynomialExpansion
        node_name = "{}.node".format(polynomial_exp.name)
        poly_tf_ds = PolynomialFeatures()
        poly_tf_ds.deserialize_from_bundle(self.tmp_dir, node_name)

        # Transform some sample data
        res_a = polynomial_exp.transform(self.df[['a', 'b']])
        res_b = poly_tf_ds.transform(self.df[['a', 'b']])

        self.assertEqual(res_a[0][0], res_b[0][0])
        self.assertEqual(res_a[1][0], res_b[1][0])
        self.assertEqual(res_a[2][0], res_b[2][0])
        self.assertEqual(res_a[3][0], res_b[3][0])
        self.assertEqual(res_a[0][1], res_b[0][1])
        self.assertEqual(res_a[1][1], res_b[1][1])
        self.assertEqual(res_a[2][1], res_b[2][1])
        self.assertEqual(res_a[3][1], res_b[3][1])