Java 动态if-then代码
我使用的是决策树算法,我得到的是if-then规则(作为文本返回),例如:Java 动态if-then代码,java,decision-tree,Java,Decision Tree,我使用的是决策树算法,我得到的是if-then规则(作为文本返回),例如: if(Parameter1 > 10) then if(Parameter2< 5) then do A else do B else do C 如果(参数1>10)则 如果(参数2点; } } 及 公共类LessThan实现谓词{ 私人终点; 公共课(最后一分){ 这个点=点; } 公共布尔测试(最终输入整数){ 返回输入点; } } 等等。然后,您可以使用它动态构造逻辑检查,因为您的测试
if(Parameter1 > 10) then
if(Parameter2< 5) then do A
else do B
else do C
如果(参数1>10)则
如果(参数2<5),则执行以下操作
还有别的吗
还有别的吗
我想使用这些规则来获得一些项目的决策:item(Parameter1,Parameter2)示例:item1(15,5),item2(10,20)。。。
问题是,if-then规则是动态的,我想编写一个能够读取这些规则并将其应用于项目的代码。您可以反过来使用谓词来实现测试。比如说,
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;
}
}
大于实现谓词的公共类{
私人终点;
公共大于(最终整数点){
这个点=点;
}
公共布尔测试(最终输入整数){
返回输入>点;
}
}
及
公共类LessThan实现谓词{
私人终点;
公共课(最后一分){
这个点=点;
}
公共布尔测试(最终输入整数){
返回输入点;
}
}
等等。然后,您可以使用它动态构造逻辑检查,因为您的测试现在可以正常工作了
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
谓词gt10=新的大于(10);
谓词lt5=新的LessThan(5);
如果(gt10.测试(参数1)),则
如果(lt5.测试(参数2)),则执行
还有别的吗
还有别的吗
将A、B和C的执行封装在函数中,您就可以进入一个灵活的系统。现在,您正在处理功能对象,您可以动态地构造事物-而不是上面所示的固定测试,您可以根据需要组合测试和结果。好的,您尝试了什么,遇到了什么问题?听起来您需要构建一个决策树作为数据结构,并将其应用于对一些输入进行分类。要使它们“动态”,请使用变量而不是文字:
int limit=10;如果(参数1>限制).
是,就是这样。问题是,如何在Java代码中编写它?我什么都没试过我不知道怎么解决这个问题。一些想法?@SashaSalauyou在应用决策树之前,我不知道有多少if-then规则。每次我(在新数据上)使用它,我都会得到一组新的数据rules@Zahzah规则总是嵌套的吗?或者它们可能是树状排列的?参见我在本例中使用的两个if-else,它并不总是这样,我可以用3或4来代替。这就是我所说的“现在处理的是功能对象,您可以动态构造事物-而不是上面所示的固定测试,您可以根据需要编写测试和结果。”@然后你需要创建一个这样的谓词树
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