use of org.kie.kogito.explainability.model.domain.FeatureDomain in project kogito-apps by kiegroup.
the class CounterfactualEntityFactoryTest method testURIFactory.
@Test
void testURIFactory() throws URISyntaxException {
final URI value = URI.create("./");
Feature feature = FeatureFactory.newURIFeature("uri-feature", value);
CounterfactualEntity counterfactualEntity = CounterfactualEntityFactory.from(feature);
assertTrue(counterfactualEntity instanceof FixedURIEntity);
assertEquals(Type.URI, counterfactualEntity.asFeature().getType());
FeatureDomain domain = URIFeatureDomain.create(new URI("./"), new URI("../"), new URI("https://example.com"));
feature = FeatureFactory.newURIFeature("uri-feature", value, domain);
counterfactualEntity = CounterfactualEntityFactory.from(feature);
assertTrue(counterfactualEntity instanceof URIEntity);
assertEquals(value, counterfactualEntity.asFeature().getValue().getUnderlyingObject());
domain = URIFeatureDomain.create(List.of(new URI("./"), new URI("../"), new URI("https://example.com")));
feature = FeatureFactory.newURIFeature("uri-feature", value, domain);
counterfactualEntity = CounterfactualEntityFactory.from(feature);
assertTrue(counterfactualEntity instanceof URIEntity);
assertEquals(value, counterfactualEntity.asFeature().getValue().getUnderlyingObject());
domain = URIFeatureDomain.create(Set.of(new URI("./"), new URI("../"), new URI("https://example.com")));
feature = FeatureFactory.newURIFeature("uri-feature", value, domain);
counterfactualEntity = CounterfactualEntityFactory.from(feature);
assertTrue(counterfactualEntity instanceof URIEntity);
assertEquals(value, counterfactualEntity.asFeature().getValue().getUnderlyingObject());
}
use of org.kie.kogito.explainability.model.domain.FeatureDomain in project kogito-apps by kiegroup.
the class CounterfactualEntityFactoryTest method testCategoricalFactorySet.
@Test
void testCategoricalFactorySet() {
final String value = "foo";
final FeatureDomain domain = CategoricalFeatureDomain.create(Set.of("foo", "bar"));
final Feature feature = FeatureFactory.newCategoricalFeature("categorical-feature", value, domain);
final CounterfactualEntity counterfactualEntity = CounterfactualEntityFactory.from(feature);
assertTrue(counterfactualEntity instanceof CategoricalEntity);
assertEquals(domain.getCategories(), ((CategoricalEntity) counterfactualEntity).getValueRange());
assertEquals(value, counterfactualEntity.asFeature().getValue().toString());
}
use of org.kie.kogito.explainability.model.domain.FeatureDomain in project kogito-apps by kiegroup.
the class CounterfactualEntityFactoryTest method testBinaryFactory.
@Test
void testBinaryFactory() {
final ByteBuffer value = ByteBuffer.allocate(256);
Feature feature = FeatureFactory.newBinaryFeature("binary-feature", value);
CounterfactualEntity counterfactualEntity = CounterfactualEntityFactory.from(feature);
assertTrue(counterfactualEntity instanceof FixedBinaryEntity);
assertEquals(Type.BINARY, counterfactualEntity.asFeature().getType());
final List<ByteBuffer> categories = Stream.of("bar".getBytes(), "baz".getBytes(), "fun".getBytes()).map(ByteBuffer::wrap).collect(Collectors.toList());
FeatureDomain domain = BinaryFeatureDomain.create(categories);
feature = FeatureFactory.newBinaryFeature("binary-feature", value, domain);
counterfactualEntity = CounterfactualEntityFactory.from(feature);
assertTrue(counterfactualEntity instanceof BinaryEntity);
assertEquals(domain.getCategories(), ((BinaryEntity) counterfactualEntity).getValueRange());
domain = BinaryFeatureDomain.create(new HashSet<>(categories));
feature = FeatureFactory.newBinaryFeature("binary-feature", value, domain);
counterfactualEntity = CounterfactualEntityFactory.from(feature);
assertEquals(domain.getCategories(), ((BinaryEntity) counterfactualEntity).getValueRange());
domain = BinaryFeatureDomain.create(ByteBuffer.wrap("bar".getBytes()), ByteBuffer.wrap("baz".getBytes()), ByteBuffer.wrap("fun".getBytes()));
feature = FeatureFactory.newBinaryFeature("binary-feature", value, domain);
counterfactualEntity = CounterfactualEntityFactory.from(feature);
assertEquals(domain.getCategories(), ((BinaryEntity) counterfactualEntity).getValueRange());
assertEquals(value, counterfactualEntity.asFeature().getValue().getUnderlyingObject());
}
use of org.kie.kogito.explainability.model.domain.FeatureDomain in project kogito-apps by kiegroup.
the class CounterfactualEntityFactoryTest method testTimeFactory.
@Test
void testTimeFactory() {
final LocalTime value = LocalTime.now();
Feature feature = FeatureFactory.newTimeFeature("time-feature", value);
CounterfactualEntity counterfactualEntity = CounterfactualEntityFactory.from(feature);
assertTrue(counterfactualEntity instanceof FixedTimeEntity);
assertEquals(Type.TIME, counterfactualEntity.asFeature().getType());
FeatureDomain domain = TimeFeatureDomain.create(value.minusHours(10), value.plusHours(10));
feature = FeatureFactory.newTimeFeature("time-feature", value, domain);
counterfactualEntity = CounterfactualEntityFactory.from(feature);
assertTrue(counterfactualEntity instanceof TimeEntity);
assertEquals(Type.TIME, counterfactualEntity.asFeature().getType());
assertEquals(value, ((TimeEntity) counterfactualEntity).getProposedValue());
}
use of org.kie.kogito.explainability.model.domain.FeatureDomain in project kogito-apps by kiegroup.
the class CounterfactualEntityFactoryTest method testDurationFactory.
@Test
void testDurationFactory() {
final Duration value = Duration.ofDays(1);
Feature feature = FeatureFactory.newDurationFeature("duration-feature", value);
CounterfactualEntity counterfactualEntity = CounterfactualEntityFactory.from(feature);
assertTrue(counterfactualEntity instanceof FixedDurationEntity);
assertEquals(Type.DURATION, counterfactualEntity.asFeature().getType());
FeatureDomain domain = DurationFeatureDomain.create(0, 60, ChronoUnit.SECONDS);
feature = FeatureFactory.newDurationFeature("duration-feature", value, domain);
counterfactualEntity = CounterfactualEntityFactory.from(feature);
assertTrue(counterfactualEntity instanceof DurationEntity);
assertEquals(Type.DURATION, counterfactualEntity.asFeature().getType());
assertFalse(counterfactualEntity.isConstrained());
CounterfactualEntity entity = DurationEntity.from(feature, Duration.ZERO, Duration.ofDays(2));
assertEquals(0, entity.distance());
assertTrue(((DurationEntity) entity).getValueRange().contains(1e5));
assertFalse(((DurationEntity) entity).getValueRange().contains(2e5));
assertFalse(entity.isConstrained());
entity = DurationEntity.from(feature, Duration.ZERO, Duration.ofDays(2), false);
assertEquals(0, entity.distance());
assertFalse(entity.isConstrained());
FeatureDistribution distribution = new NumericFeatureDistribution(feature, new Random().doubles(10).toArray());
entity = DurationEntity.from(feature, Duration.ZERO, Duration.ofDays(2), distribution);
assertEquals(0, entity.distance());
assertFalse(entity.isConstrained());
}
Aggregations