在循环中设置宏

·索珊·索珊 成员职位:3.新手
2019年6月编辑 帮助
嗨,所有
我试图在循环中提取宏,并使用%{loop_value}宏单独命名它们
然后,我需要基于这些宏创建一个额外的宏。我使用提取宏操作符。
似乎每当我运行进程并在循环期间中断它时,宏都是正确形成的,但是如果我删除所有断点,进程就会失败,并声称没有创建循环宏。
帮助任何人吗?

最佳答案

答案

  • lionelderkrikorlionelderkrikor 主持人,RapidMiner认证分析师,会员职位:1195年独角兽
    @shoshan

    为了让我们了解你在做什么,你能分享一下你的过程和数据吗?

    问候,

    莱昂内尔
  • ·索珊·索珊 成员职位:3.新手
    我有一个由特定属性的3个可能值组成的人口:First, Second和Third。我需要找到每个种群的大小,并将其中最小的设置为一个宏。我开始使用“循环值”操作符的属性,我需要。每次循环迭代,我过滤等于循环值的示例,然后尝试创建宏Size_%{loop_value}。
    在循环结束时,我希望有3个宏——Size_First、Size_Second和Size_Third。
    如果他们试图创建另一个宏:
    Min_Size = min (eval (% {Size_First}), eval (% {Size_Second}), eval (% {Size_Third}))

    这里有一个问题-如果我在循环中使用断点,所有3个宏都正确形成,最终Min_Size宏完全符合我的期望。
    一旦我删除了所有的断点,进程失败,错误消息读“Size_First”是未知的。我可以在宏视图中看到,确实只创建了Size_Third。
    这怎么可能?
  • tftemmetftemme 管理员、员工、RapidMiner认证分析师、RapidMiner认证专家、RMResearcher、会员职位:164RM研究
    @shoshan

    我的第一个猜测是,这是循环值操作符并行执行的问题。当您使用断点时,将强制执行不并行化,这样您就有了创建宏的已定义顺序。当您删除它们时,您运行并行运算符,迭代的顺序没有定义。可能(通过随机效应)您的第三个宏是在创建第一个宏之前创建的,因此它无法访问“Size_First”宏。停用“启用并行执行”(如果没有看到参数,可能需要“显示高级参数”)。这应该能解决问题。如果没有,请张贴你的过程的xml(最好是你的数据或数据的样本,如果可能的话)。这样我们所有人都能更容易地看到并发现问题。

    另一点:您可能希望从操作符工具箱扩展中查看Extract Statistics操作符(通过Marketplace安装)。它直接给出名义属性的“最少”出现值。当我正确理解你的问题时,这就是你想要的,还是?

    致以最良好的问候,并希望这能有所帮助
    费边
    jczogalla
  • ·索珊·索珊 成员职位:3.新手
    @tftemme
    谢谢,问题解决了。
    根据您关于问题起源的假设-为什么当宏被不同地命名时它们会被覆盖?
    我调用最后的生成宏(Min_Size)循环,所以顺序也不重要。
    所以谜团依然存在:)
    禁用并行还是有效的。
    我还通过提取宏观统计数据找到了解决方案-我只是使用了每个值的计数选项3次。我也会从市场上下载统计数据。
    再次感谢!
  • tftemmetftemme 管理员、员工、RapidMiner认证分析师、RapidMiner认证专家、RMResearcher、会员职位:164RM研究
    你好,

    假设您正在与一个宏并行使用Loop操作符(例如迭代宏)。当您现在并行地开始前四个迭代(在四个不同的线程中)时,您不能对所有迭代使用一个通用宏。每个线程都需要自己的宏值(在线程中称为迭代),并设置适当的值。因此,一个迭代中的宏只能存在于迭代本身中。只有在进程的主线程中使用的宏(当然它也执行循环的一部分迭代)才能在循环结束后被访问。
    当你在循环之前用默认值(例如0)“初始化”三个宏时,你可以使用并行循环。这应该也可以。

    对了,忘了Extract Macro还可以提取属性的统计信息。甚至比从工具箱中提取统计操作符更容易。然而,操作器工具箱有几个操作器,使使用RapidMiner更容易。总是值得下载的(好吧,不应该说别的,因为我实现了一堆;-)

    最好的问候,
    费边
登录注册置评。