def test_not_explainable(test_dir, data_frame): label_col = 'label' df = data_frame(n_samples=100, label_col=label_col) data_encoder_cols = [BowEncoder('features')] label_encoder_cols = [CategoricalEncoder(label_col)] data_cols = [BowFeaturizer('features')] output_path = os.path.join(test_dir, "tmp", "out") imputer = Imputer(data_featurizers=data_cols, label_encoders=label_encoder_cols, data_encoders=data_encoder_cols, output_path=output_path).fit(train_df=df, num_epochs=1) assert not imputer.is_explainable try: imputer.explain('some label') raise pytest.fail( 'imputer.explain should fail with an appropriate error message') except ValueError as exception: assert exception.args[0] == 'No explainable data encoders available.' instance = pd.Series({'features': 'some feature text'}) try: imputer.explain_instance(instance) raise pytest.fail( 'imputer.explain_instance should fail with an appropriate error message' ) except ValueError as exception: assert exception.args[0] == 'No explainable data encoders available.'
def test_explain_instance_without_label(test_dir, data_frame): label_col = 'label' df = data_frame(n_samples=100, label_col=label_col) data_encoder_cols = [TfIdfEncoder('features')] label_encoder_cols = [CategoricalEncoder(label_col)] data_cols = [BowFeaturizer('features')] output_path = os.path.join(test_dir, "tmp", "out") imputer = Imputer(data_featurizers=data_cols, label_encoders=label_encoder_cols, data_encoders=data_encoder_cols, output_path=output_path).fit(train_df=df, num_epochs=1) assert imputer.is_explainable instance = pd.Series({'features': 'some feature text'}) # explain_instance should not raise an exception _ = imputer.explain_instance(instance) assert True