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'])
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'])
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])