我正在使用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将两个逗号之间的值视为“Missing Value”(这是代码库中使用的术语),我不喜欢。
我一直试图通过源代码直接解决问题。
特别是CSVLoader.getDataSet()和CSVLoader.getInstance()以及ConverterUtils.getToken()似乎对此事负责。
我已经尝试了很多改变代码并让weka将这个空值(因为这是weka认为它们是什么)视为零,但我找不到解决方案。
有人可以提供更好的解决方案吗?
答案 0 :(得分:1)
您是否考虑过使用arff
格式?
arff格式的一个主要好处是它有一个稀疏变体。
此外,我猜你可以以某种方式添加自定义解析器。那么您是否考虑过修改个人CSV变体的CSV解析器?这不应该太难。
某些算法(例如APRIORI)具有允许将缺失值视为0的参数。