在循环中设置宏
最佳答案
-
tftemme
管理员、员工、RapidMiner认证分析师、RapidMiner认证专家、RMResearcher、会员职位:164
RM研究
哦,我意识到这可能不是迭代顺序的问题,但是宏只能在并行执行循环的当前迭代期间存在(否则宏将被覆盖)。因此,在循环值之后,当并行执行时,只有一个宏存活。不同的问题,相同的解决方案,禁用并行执行。5
| 0评论 | 0的讨论 | 0成员 | 0在线 |
tftemme
管理员、员工、RapidMiner认证分析师、RapidMiner认证专家、RMResearcher、会员职位:164
答案
为了让我们了解你在做什么,你能分享一下你的过程和数据吗?
问候,
莱昂内尔
在循环结束时,我希望有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。
这怎么可能?
我的第一个猜测是,这是循环值操作符并行执行的问题。当您使用断点时,将强制执行不并行化,这样您就有了创建宏的已定义顺序。当您删除它们时,您运行并行运算符,迭代的顺序没有定义。可能(通过随机效应)您的第三个宏是在创建第一个宏之前创建的,因此它无法访问“Size_First”宏。停用“启用并行执行”(如果没有看到参数,可能需要“显示高级参数”)。这应该能解决问题。如果没有,请张贴你的过程的xml(最好是你的数据或数据的样本,如果可能的话)。这样我们所有人都能更容易地看到并发现问题。
另一点:您可能希望从操作符工具箱扩展中查看Extract Statistics操作符(通过Marketplace安装)。它直接给出名义属性的“最少”出现值。当我正确理解你的问题时,这就是你想要的,还是?
致以最良好的问候,并希望这能有所帮助
费边
谢谢,问题解决了。
根据您关于问题起源的假设-为什么当宏被不同地命名时它们会被覆盖?
我调用最后的生成宏(Min_Size)外循环,所以顺序也不重要。
所以谜团依然存在
禁用并行还是有效的。
我还通过提取宏观统计数据找到了解决方案-我只是使用了每个值的计数选项3次。我也会从市场上下载统计数据。
再次感谢!
假设您正在与一个宏并行使用Loop操作符(例如迭代宏)。当您现在并行地开始前四个迭代(在四个不同的线程中)时,您不能对所有迭代使用一个通用宏。每个线程都需要自己的宏值(在线程中称为迭代),并设置适当的值。因此,一个迭代中的宏只能存在于迭代本身中。只有在进程的主线程中使用的宏(当然它也执行循环的一部分迭代)才能在循环结束后被访问。
当你在循环之前用默认值(例如0)“初始化”三个宏时,你可以使用并行循环。这应该也可以。
对了,忘了Extract Macro还可以提取属性的统计信息。甚至比从工具箱中提取统计操作符更容易。然而,操作器工具箱有几个操作器,使使用RapidMiner更容易。总是值得下载的(好吧,不应该说别的,因为我实现了一堆;-)
最好的问候,
费边