我使用决策树算法,我得到if-then规则(以文本形式返回),例如:
if(Parameter1 > 10) then
if(Parameter2< 5) then do A
else do B
else do C
我想使用这些规则来获得少数项目的决策:item(Parameter1,Parameter2)示例:item1(15,5),item2(10,20),... 问题是,if-then规则是动态的,我想编写一个能够读取这些规则并将它们应用于项目的代码。
答案 0 :(得分:2)
您可以翻转它并使用Predicates来实现您的测试。例如,
public class GreaterThan implements Predicate<Integer> {
private final int point;
public GreaterThan(final int point) {
this.point = point;
}
public boolean test(final Integer incoming) {
return incoming > point;
}
}
和
public class LessThan implements Predicate<Integer> {
private final int point;
public LessThan(final int point) {
this.point = point;
}
public boolean test(final Integer incoming) {
return incoming < point;
}
}
等等。然后,您可以使用它来动态构建逻辑检查,因为您的测试现在正在运行。
Predicate<Integer> gt10 = new GreaterThan(10);
Predicate<Integer> lt5 = new LessThan(5);
if(gt10.test(Parameter1)) then
if(lt5.test(Parameter2)) then do A
else do B
else do C
将A,B和C的执行包裹在功能中,然后您就可以使用灵活的系统了。现在您正在处理功能对象,您可以动态地构建事物 - 而不是上面显示的固定测试,您可以根据需要组合测试和结果。