是否可以在WEKA中实现布尔属性?
我想实施市场篮分析,为此我需要一张这样的表格
Product_A Prod_B
Yes No
No Yes
Yes Yes
等等。
对于No
或false
,我可以使用 ?
,它代表 WEKA 中的空值:
Product_A Prod_B
Yes ?
? Yes
Yes Yes
但是现在我得到了频繁的项集和规则,例如:
Product_A=Yes, Prod_B=Yes
但我只想拥有
Product_A, Prod_B.
你明白我的意思吗?
我找到了一个关于创建ARFF文件的指南,但没有任何布尔数据类型。但是拥有这样的数据类型会很有用,还是我想错了?
只需使用带有 0 和 1 的数字属性表示假和真。ML 算法通常不关心布尔值,无论如何都会将它们视为数字。
使用f
和t
作为标称值。这在supermarket.arff
示例文件中使用,并且与 Java API 兼容。
我用这个 Java 代码创建了这样一个"布尔"属性:
FastVector tempBooleanValues = new FastVector();
tempBooleanValues.addElement("f");
tempBooleanValues.addElement("t");
tempAttributes.addElement(new Attribute("attribute_1", tempBooleanValues));
在 arff 文件中,它看起来像这样:
@attribute attribute_1 {f,t}
...
transaction_1,f
transaction_2,t
有关示例,请参阅 Weka supermarket.arff
文件。
如果你想使用稀疏格式,它会变得更加棘手的IIRC;因为默认情况下,缺失值被替换为它们的模式 - 这将是Yes
。但我相信 Weka 的最新版(不是书籍版本)在那里有改进。