从 Rapidminer 的交叉距离运算符的输出,如何从 'Reference set' 中找到 'Request set' 行 number/numbers

From the ouput of Cross Distances operator of Rapid Miner, how to find 'Request set' row number/numbers from the 'Reference set'

我是 Rapid Miner 学习工作室及其操作员的新手,在使用 Rapid Miner 时,我遇到了一个奇怪的疑问,问题描述为 issue -

  1. 我有一个 100 行的数据集,我正在将这个集输入到 'Filter Example Range' 运算符
  2. 'Filter Example Range' 运算符的输出将是 'Example set' 和 'Original Set'
  3. 'Filter Example Range' 输出设置为 'Cross Distances' 运算符的输入。一个是 'Request set',第一个示例:5,最后一个示例:5(这是 'Filter Example Range' 的 'Example set',数字 5 表示实际的行号)另一个输入是 'Reference Set' - 100 行数据(这是 Filter Example Range' 运算符的 'Original set')
  4. 从 'Cross Distances' 运算符我们得到三个输出。一个是 'result set'、'Request set' 和 'Reference set'(这两个也是提供的输入)

现在从 'Cross Distances' 运算符获得输出后,我想知道提供的 'reference set'.

中 'Request set' 的行号是多少

是否有机会在 'Execute R' 运算符中对这两个集合进行比较?或者我请求某人帮助我做任何选择。

Cross Distances 运算符需要一个 id 属性,如果输入示例集中不存在,则会添加一个。 id属性是特殊属性,不用于计算距离;为此仅使用常规属性。如果输入示例集包含一个名为 id 的属性,该属性是常规的,则运算符会将其更改为特殊属性,从而将其排除在距离计算之外。

输出是对之间的距离,使用每个输入的 id 引用每对。

所以如果输出看起来像这样(使用 iris 数据集并选择第五个作为请求输入,其余所有作为文档输入)。

request document distance
id_5    id_5     0.0
id_5    id_1     0.141

表示请求中的id_5和文档中的id_5相距0距离,请求中的id_5和文档中的id_1文档相隔0.141

鸢尾花数据集中id_1id_5,数据如下

id    a1    a2    a3    a4
id_1  5.1   3.5   1.4   0.2
id_5  5.0   3.6   1.4   0.2

距离是

sqrt((5.1-5.0)^2 + (3.5-3.6)^2 + (1.4-1.4)^2 + (0.2-0.2)^2)

sqrt(0.01 + 0.01 + 0 + 0)

这变成了 0.141

是的,您可以使用 Execute R 运算符在 R 中完成。为此,您需要 compare 包中的 compare() 函数。要使用此函数比较两个数据集,您需要检查两个数据集中的两列是否具有相同的类型。通过执行此函数,您可以指定不同的参数,例如,如果您建议第二个数据集只是第一个数据集的一部分,则设置 "shorten=TRUE"。其他有用的参数例如 ignoreOrder、ignoreCase 和 ignoreColOrder。

您可以在 RapidMiner 中尝试的只是 joinGenerate Attributes - 对于第二种方法,您可以从 "small" 示例设置并检查 "larger" 是否设置了这些宏的任何行。

Cross Distances 运算符是恕我直言,在转换过程中会减慢速度并且不会过多地处理数据。因此它只能在特定任务中有用。