循环中的异常处理

lsevellsevel 成员职位:18贡献我
2019年8月编辑 帮助

你好,

我正在尝试通过集群循环子进程,并在发生错误时继续循环。我把异常句柄操作符放在循环集群中。然而,似乎一旦抛出错误,循环就会停止。有没有人有任何建议,如何改变这一点,使它移动到下一个集群后,击中一个错误?我在下面放了一些示例代码。

< ?xml version="1.0" encoding="UTF-8" standalone="no"?>
<过程version = " 7.0.001 " >
> <上下文
<输入/ >
<输出/ >
<宏/ >
> < /上下文

<过程扩展= " true " >


< /操作符>

<列出关键= " filters_list " >

< / >列表
< /操作符>


< /操作符>



< /操作符>




<列出关键= " set_additional_roles " / >
< /操作符>


<参数键= "属性"值= "标签| rh_superiortemporal_volume | rh_superiortemporal_thickness | rh_superiortemporal_area | lh_superiorfrontal_volume | lh_superiorfrontal_thickness | lh_superiorfrontal_area | rh_rostralanteriorcingulate_volume | rh_rostralanteriorcingulate_thickness | rh_rostralanteriorcingulate_area | rh_caudalanteriorcingulate_volume | rh_caudalanteriorcingulate_thickness | rh_caudalanteriorcingulate_area | lh_rostralanteriorcingulate_volume | lh_rostralanteriorcingulate_thickness | lh_rostralanteriorcingulate_area | lh_caudalanteriorcingulate_volume | lh_caudalanteriorcingulate_thickness | lh_caudalanteriorcingulate_area | rh_precuneus_volume | rh_precuneus_thickness | rh_precuneus_area | lh_precuneus_volume | lh_precuneus_thickness | lh_precuneus_area | rh_inferiorparietal_volume | rh_inferiorparietal_thickness | rh_inferiorparietal_area | lh_parahippocampal_volume | lh_parahippocampal_thickness | lh_parahippocampal_area | Right_Pallidum | Left_Pallidum | lh_rostralmiddlefrontal_volume | lh_rostralmiddlefrontal_thickness | lh_rostralmiddlefrontal_area | lh_caudalmiddlefrontal_volume | lh_caudalmiddlefrontal_thickness | lh_caudalmiddlefrontal_area | lh_postcentral_volume | lh_postcentral_thickness | lh_postcentral_area | lh_insula_volume | lh_insula_thickness | lh_insula_area | Left_Caudate | Right_Hippocampus | rh_superiorparietal_volume | rh_superiorparietal_thickness | rh_superiorparietal_area | lh_posteriorcingulate_volume | lh_posteriorcingulate_thickness | lh_posteriorcingulate_area | rh_cuneus_volume | rh_cuneus_thickness | rh_cuneus_area | lh_lingual_volume | lh_lingual_thickness |lh_lingual_area | rh_lateraloccipital_volume | rh_lateraloccipital_thickness | rh_lateraloccipital_area " / >
< /操作符>


<过程扩展= " true " >

<过程扩展= " true " >


<过程扩展= " true " >


< /操作符>


< /操作符>



< /操作符>

<过程扩展= " true " >


< /操作符>



< /操作符>



<列出关键= " class_weights " / >
< /操作符>














> < /过程
<过程扩展= " true " >


< /操作符>




> < /过程
< /操作符>











> < /过程
<过程扩展= " true " >

<列出关键= " application_parameters " / >
< /操作符>













> < /过程
< /操作符>



< /操作符>


< /操作符>



< /操作符>








> < /过程
<过程扩展= " true " >



< /操作符>






> < /过程
< /操作符>






> < /过程
< /操作符>



< /操作符>


< /操作符>


< /操作符>


< /操作符>










> < /过程
< /操作符>
> < /过程

标记:

答案

  • IngoRMIngoRM 管理员、版主、员工、RapidMiner认证分析师、RapidMiner认证专家、社区经理、RMResearcher、会员、大学教授职位:1751年RM创始人

    你好,

    我必须承认,遵循您的流程有点困难(我没有数据,而且通常一些操作员连接对我来说没有很大意义),所以我决定稍微改变流程,以更接近我认为您想要实现的目标。请看下面的过程:

    < ?xml version="1.0" encoding="UTF-8"?> <过程version = " 7.2.000”>
    > <上下文
    <输入/ >
    <输出/ >
    <宏/ >
    > < /上下文

    <过程扩展= " true " >


    < /操作符>



    < /操作符>


    < /操作符>

    <列出关键= " function_descriptions " >

    < / >列表
    < /操作符>



    <列出关键= " set_additional_roles " / >
    < /操作符>


    <过程扩展= " true " >

    <过程扩展= " true " >


    <过程扩展= " true " >



    <过程扩展= " true " >







    > < /过程
    <过程扩展= " true " >







    > < /过程
    < /操作符>





    > < /过程
    <过程扩展= " true " >

    <列出关键= " application_parameters " / >
    < /操作符>










    > < /过程
    < /操作符>



    < /操作符>


    < /操作符>



    < /操作符>









    > < /过程
    <过程扩展= " true " >


    < /操作符>






    > < /过程
    < /操作符>






    > < /过程
    < /操作符>



    < /操作符>









    > < /过程
    < /操作符>
    > < /过程

    在这个设置中,我用Branch操作符人为地制造了一个问题:每当输入小于50时,我就使用ID3学习器(它不能处理数字属性并且会失败),否则我就使用Decision Tree。正如您所看到的,通过设置一些断点,在两种情况下,我得到的示例少于50个,并且最终只得到2个(总共4个)性能向量。操作符Handle Exception在本例中起作用。我假设您的流程中出现了其他问题,并希望所附的流程可能对您识别此问题仍然有用。

    欢呼,

    Ingo

  • lsevellsevel 成员职位:18贡献我

    嗨Ingo,

    谢谢这个例子,它有助于我们对问题的概念化。似乎要修复分支,就需要先验地知道给定算法何时会抛出错误。我们不一定能轻易获得这些知识(我们试图克服的错误是LASSO[具有预定的t值]产生奇异矩阵)。我们有没有办法在集群N上运行算子A,如果它产生一个奇异矩阵,就移到集群N+1,等等?

    谢谢你!

    画了

  • IngoRMIngoRM 管理员、版主、员工、RapidMiner认证分析师、RapidMiner认证专家、社区经理、RMResearcher、会员、大学教授职位:1751年RM创始人

    啊,不,这应该是独立于分支的。我在这个“概念化”过程中需要分支的唯一原因是模拟一个错误。我的意思是,我想使用一个“错误的”算法,它将在四个案例中的两个案例中故意失败,以证明您仍然可以得到两个结果,其中过程实际上没有错误。

    所以我的观点是:忘记分支,这只是我试图以一种可控的方式产生“错误”。但是整个过程也应该在没有分支的情况下工作,只是在下面产生一个错误,比如在奇异矩阵的情况下。

    我希望这现在更有意义了…

    欢呼,

    Ingo

登录注册置评。