1

我正在使用 weka 对二进制数据进行聚类。注意我是直接通过API或者源码使用weka。

例如,我的数据输入是一个巨大的 .csv 文件

attrib1, attrib2, atrib3
0,1,0
1,0,1
0,0,1

但是为了减小 .csv 的大小,数据提供者(我不能直接访问数据集)忽略零,上面的代码片段写为

    attrib1, attrib2, atrib3
    ,1,
    1,,1
    ,,1

所以我发现 weka 将两个逗号之间的值视为我不喜欢的“缺失值”(这是代码库中使用的术语)。

我一直在尝试直接通过源代码来解决它。

特别是CSVLoader.getDataSet()CSVLoader.getInstance()以及ConverterUtils.getToken()似乎对这些东西负责。

我已经尝试了很多来更改代码并使 weka 将此空值(因为 weka 认为它们是)视为零,但我找不到解决方案。

有人可以提供更好的解决方案吗?

4

1 回答 1

1

您是否考虑过使用该arff格式?

arff 格式的一个主要优点是它具有稀疏变体。

此外,我想您可以以某种方式添加自定义解析器。那么您是否考虑过只为您的个人 CSV 变体修改 CSV 解析器?做起来应该不会太难。

一些算法(例如 APRIORI)具有允许将缺失值视为 0 的参数。

于 2013-01-05T19:22:59.123 回答