Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 动态if-then代码_Java_Decision Tree - Fatal编程技术网

Java 动态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-then规则(作为文本返回),例如:

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