Oracle Rapidminer:将标称属性转换为二进制属性的内存问题

Oracle Rapidminer:将标称属性转换为二进制属性的内存问题,oracle,memory,transformation,gsp,rapidminer,Oracle,Memory,Transformation,Gsp,Rapidminer,我想使用广义序列模式算法分析一个大型数据集(2000000条记录,20000个客户ID,6个标称属性) 这要求除时间和客户ID属性外的所有属性都是双名的。有6个我想为模式分析的标称属性,我需要使用“标称到二进制”函数将它们转换为二进制属性。这在我的工作站上造成了内存问题(16GB RAM,其中12个分配给运行rapidminer的Java实例) 理想情况下,我希望以某种方式设置我的项目,即它临时写入光盘或使用oracle数据库中的临时表,我的模型也从中直接读取数据。为了使用“write data

我想使用广义序列模式算法分析一个大型数据集(2000000条记录,20000个客户ID,6个标称属性)

这要求除时间和客户ID属性外的所有属性都是双名的。有6个我想为模式分析的标称属性,我需要使用“标称到二进制”函数将它们转换为二进制属性。这在我的工作站上造成了内存问题(16GB RAM,其中12个分配给运行rapidminer的Java实例)

理想情况下,我希望以某种方式设置我的项目,即它临时写入光盘或使用oracle数据库中的临时表,我的模型也从中直接读取数据。为了使用“write database”或“update database”函数,我需要在我的数据库中已经有一个包含布尔列的现有表(如果我没有弄错的话)

我试图一步一步地将二进制转换的结果写入本地磁盘上的csv文件。我开始使用具有最少不同值的nominal属性,生成了一个csv文件,其中包含我的数据集ID,现在有7个双名属性。看到文件大小已经超过200MB,我感到非常惊讶。这是由于rapidminer为二进制值“true”/“false”写入字符串造成的。写0/1不是更节省内存吗

有没有办法直接使用oracle数据库或使用0/1值而不是“真”/“假”?我的下一个专栏将有3000个不同的值需要转换,这将在噩梦中结束

我非常感谢关于如何更有效地使用内存或直接在数据库中工作的建议。如果有人知道如何轻松地将Oracle中的varchar2列转换为每个不同值的布尔列,我们也会非常感激

非常感谢, 霍尔格

编辑:

我的目标是从这样的结构中获得:

column_a; column_b; customer_ID; timestamp

value_aa; value_ba; 1; 1

value_ab; value_ba; 1; 2

value_ab; value_bb; 1; 3
customer_ID; timestamp; column_a_value_aa; column_a_value_ab; column_b_value_ba; column_b_value_bb

1; 1; 1; 0; 1; 0

1; 2; 0; 1; 1; 0

1; 3; 0; 1; 0; 1
对于该结构:

column_a; column_b; customer_ID; timestamp

value_aa; value_ba; 1; 1

value_ab; value_ba; 1; 2

value_ab; value_bb; 1; 3
customer_ID; timestamp; column_a_value_aa; column_a_value_ab; column_b_value_ba; column_b_value_bb

1; 1; 1; 0; 1; 0

1; 2; 0; 1; 1; 0

1; 3; 0; 1; 0; 1

这个答案太长,无法评论

如果您感兴趣的六个变量有数千个级别,那么使用这些数据不太可能得到有用的结果。一种典型的方法是对输入的数据进行分类,从而减少“二项式”变量。例如,你使用的不是“1加仑全脂牛奶”,而是“乳制品”。这可以产生更多可操作的结果。请记住,Oracle只允许表中有1000列,因此数据库还有其他限制因素

如果您正在处理许多单独的项目,那么我会建议其他方法,特别是基于关联规则的方法。这不会限制变量的数量


就我个人而言,我发现我可以用SQL做很多这方面的工作,这就是为什么我写了一本关于这个主题的书(“使用SQL和Excel进行数据分析”)

您可以使用运算符
标称值到数字值
将真值和假值转换为1或0。将
编码类型
参数设置为
唯一整数

我指的是二进制或布尔值。不知道为什么,但在rapidminer中,这些被称为二项式(不是二项式)。实际上,就我的问题而言,不可能对它们进行分类。我不知道1000列的限制,谢谢你告诉我。也许我可以对数据进行预过滤,只查看子集及其顺序。但最好不要。我仍然不明白为什么rapidminer不简单地使用0/1…谢谢,这将有助于节省空间。然而,我能够限制分析中的项目数量。