def test_transform(self): # When there is no classifier assigned tx = get_transformer('hard') with self.assertRaises(AssertionError): tx.transform(self.X) # When there is a classifier assigned clf = RandomForestClassifier(n_estimators=10) clf.fit(self.X, self.Y) tx = get_transformer('hard', clf) transformed = tx.transform(self.X) self.assertIsInstance(transformed, numpy.ndarray) self.assertEqual(transformed.shape[1], 1) self.assertEqual(transformed.shape[0], self.X.shape[0]) self.assertEqual(2, len(transformed.shape))
def compile(self, n_jobs=2) -> Pipeline: """ To Build the ensemble. This method should be called only if all models in base are already fitted. :return: """ meta_features = [] for i, mdl in enumerate(self.models): meta_features.append((mdl.__class__.__name__ + str(i), get_transformer(kind=self._get_voting(i), clf=mdl))) self.ensemble = Pipeline( steps=[('base_layer', FeatureUnion(meta_features, n_jobs=n_jobs) ), ('final_layer', self.meta_model)]) return self.ensemble
def test_fit(self): clf = RandomForestClassifier(n_estimators=10) clf.fit(self.X, self.Y) tx = get_transformer('soft', clf) fit = tx.fit(self.X, self.Y) self.assertIsInstance(fit, SoftClassifierTransformer)
def test_get(self): tx = get_transformer('soft') self.assertIsInstance(tx, SoftClassifierTransformer)
def test_get(self): tx = get_transformer('hard') self.assertIsInstance(tx, HardClassifierTransformer)