ARFF在ELKI 0.6.5或0.6.0中解析

时间:2015-07-19 19:51:17

标签: arff elki

我想使用最新版本的ELKI,但是我得到错误导致nullpointerexeptions并且该任务失败。使用0.6.0时效果很好。

这是一些玩具数据:

@ATTRIBUTE 'var_0032' real
@ATTRIBUTE 'id' real
@ATTRIBUTE 'outlier' {'no','yes'}

@DATA
0.185185185185,1.0,'no'
0.0740740740741,2.0,'no'

但我在0.6.5中失败了:

Invalid quoted line in input: no closing quote found in: @ATTRIBUTE 'outlier' {'no','yes'}
Task failed
java.lang.NullPointerException
    at de.lmu.ifi.dbs.elki.visualization.VisualizerContext.processNewResult(VisualizerContext.java:300)
    at de.lmu.ifi.dbs.elki.visualization.VisualizerContext.<init>(VisualizerContext.java:141)
    at de.lmu.ifi.dbs.elki.visualization.VisualizerParameterizer.newContext(VisualizerParameterizer.java:193)
    at de.lmu.ifi.dbs.elki.visualization.gui.ResultVisualizer.processNewResult(ResultVisualizer.java:116)
    at de.lmu.ifi.dbs.elki.workflow.OutputStep.runResultHandlers(OutputStep.java:70)
    at de.lmu.ifi.dbs.elki.KDDTask.run(KDDTask.java:120)
    at de.lmu.ifi.dbs.elki.application.KDDCLIApplication.run(KDDCLIApplication.java:60)
    at [...]

在0.6.0中,这似乎是一个警告: Invalid quoted line in input: no closing quote found in: @ATTRIBUTE 'outlier' {'no','yes'}它仍会产生ROCCURVE。

我应该担心吗? 我应该更改我的arff文件,以及如何?

2 个答案:

答案 0 :(得分:0)

ARFF文件格式(https://weka.wikispaces.com/ARFF+%28developer+version%29)在那里不使用引号。

@RELATION example
@ATTRIBUTE var_0032 NUMERIC
@ATTRIBUTE id NUMERIC
@ATTRIBUTE outlier {no,yes}

@DATA
0.185185185185,1.0,no
0.0740740740741,2.0,no

另外,如果您的id列确实是id,请不要给它real(这只是numeric)数据类型的别名。它不是数字专栏,如果你不小心,它可能会在分析中被滥用。

所以也许最好使用这样的东西:

@RELATION example
@ATTRIBUTE var_0032 NUMERIC
@ATTRIBUTE id STRING
@ATTRIBUTE class {no,yes}

@DATA
0.185185185185,'1',no
0.0740740740741,'2',no

获取正确的ARFF文件。我没有测试过,这项工作更好吗?

答案 1 :(得分:0)

首先,绝对使用0.6.5 。 ELKI还没有发布1.0版本,还有bug。它们不会在旧版本中修复,只能在新版本中修复,因为我们仍然需要才能进行更大的API更改。基本上,应该没有理由使用除最新版本之外的任何东西。 ELKI 0.7将于8月底在VLDB 2015上展出。

ARFF使用不多。解析器中可能存在错误,ARFF对分类数据的支持现在非常有限。 ARFF格式的优势在于你有很多分类属性,但主要用于分类 - 而且ELKI还没有包含很多分类算法(因为Weka已经是一个强大的工具,我们专注于算法在Weka中不可用/不好。

像这样的蜡染错误通常是由于NaN或无限值。可视化代码中仍然存在一些错误,因为不幸的是,SVG没有提供良好的类型安全性。您可以轻松地构建无效的SVG文档,或者在某些坐标中包含等无效字符的SVG文档,然后Batik渲染器将失败并显示此类错误消息。

你到底想干什么?看起来有点像是在尝试计算算法现有输出的ROC曲线?我不认为有一种简单的方法可以读取包含(分数,标识,标签)行的ARFF文件并使用MiniGUI计算ROC曲线。在Java代码中做起来并不难,但它不是UI的KDD流程工作流的用例。