def test_from_yaml_serializes_correctly_with_feature_union( self, feature_union_classifier: DFFeatureUnion, tmp_path: pathlib.Path): model = Model(feature_union_classifier) result = model.to_dict() log = Log(name="test", metrics=Metrics.from_list(["accuracy"]), estimator=result) log.save_log(tmp_path) new_model = Model.from_yaml(log.output_path) assert len(new_model.estimator.steps[0][1].transformer_list) == 2 new_steps = new_model.estimator.steps old_steps = model.estimator.steps assert new_steps[0][0] == old_steps[0][0] assert isinstance(new_steps[0][1], type(old_steps[0][1])) new_union = new_steps[0][1].transformer_list old_union = old_steps[0][1].transformer_list assert len(new_union) == len(old_union) for new_transform, old_transform in zip(new_union, old_union): assert new_transform[1].steps[0][0] == old_transform[1].steps[0][0] assert (new_transform[1].steps[0][1].get_params() == old_transform[1].steps[0][1].get_params())
def test_can_load_serialized_model_from_estimator(self, classifier: Model, tmp_path: pathlib.Path): log = Log( name="test", estimator=classifier.to_dict(), metrics=Metrics([Metric("accuracy", score=1.0)]), ) log.save_log(tmp_path) model2 = Model.from_yaml(log.output_path) assert model2.estimator.get_params( ) == classifier.estimator.get_params()
def test_can_load_serialized_model_from_pipeline(self, pipeline_linear: Pipeline, tmp_path: pathlib.Path): model = Model(pipeline_linear) log = Log( name="test", estimator=model.to_dict(), metrics=Metrics([Metric("accuracy", score=1.0)]), ) log.save_log(tmp_path) model2 = Model.from_yaml(log.output_path) for model1, model2 in zip(model.estimator.steps, model2.estimator.steps): assert model1[0] == model2[0] assert model1[1].get_params() == model2[1].get_params()