elki-cli和elki gui,我没有得到同等的结果

时间:2015-07-23 13:39:04

标签: data-mining elki

虽然是ubuntu上的终端:

db@morris:~/lisbet/elki-master/elki/target$ elki-cli -algorithm outlier.lof.LOF -dbc.parser ArffParser -dbc.in /home/db/lisbet/AllData/literature/WBC/WBC_withoutdupl_norm_v10_no_ids.arff -lof.k 8 -evaluator outlier.OutlierROCCurve -rocauc.positive yes

给予 # ROCAUC: 0.6230046948356808

并在ELKI的GUI中:

Running: -verbose -dbc.in /home/db/lisbet/AllData/literature/WBC/WBC_withoutdupl_norm_v10_no_ids.arff -dbc.parser ArffParser -algorithm outlier.lof.LOF -lof.k 8 -evaluator outlier.OutlierROCCurve -rocauc.positive yes
de.lmu.ifi.dbs.elki.datasource.FileBasedDatabaseConnection.parse: 18 ms
de.lmu.ifi.dbs.elki.datasource.FileBasedDatabaseConnection.filter: 0 ms
LOF #1/3: Materializing LOF neighborhoods.
de.lmu.ifi.dbs.elki.index.preprocessed.knn.MaterializeKNNPreprocessor.k: 9
Materializing k nearest neighbors (k=9): 223 [100%]
de.lmu.ifi.dbs.elki.index.preprocessed.knn.MaterializeKNNPreprocessor.precomputation-time: 10 ms
LOF #2/3: Computing LRDs.
LOF #3/3: Computing LOFs.
LOF: complete.
de.lmu.ifi.dbs.elki.algorithm.outlier.lof.LOF.runtime: 39 ms
ROCAUC: **0.6220657276995305**

我不明白为什么2 ROCAUC曲线不一样。

我测试这个的目标是对我的结果感到满意,我所做的是对的,但是当我得不到匹配的结果时很难。当我看到我的设置正确时,我将继续进行自己的实验,我可以信任。

1 个答案:

答案 0 :(得分:2)

传递cli作为第一个命令行参数来启动CLI,或者minigui启动MiniGUI。以下是等效的:

java -jar elki/target/elki-0.6.5-SNAPSHOT.jar cli
java -jar elki/target/elki-0.6.5-SNAPSHOT.jar KDDCLIApplication
java -jar elki/target/elki-0.6.5-SNAPSHOT.jar de.lmu.ifi.dbs.elki.application.KDDCLIApplication

这适用于任何扩展类AbstractApplication的类。

你也可以这样做:

java -cp elki/target/elki-0.6.5-SNAPSHOT.jar de.lmu.ifi.dbs.elki.application.KDDCLIApplication

(这将减少1级,但这通常不值得努力。)

这适用于任何具有标准public void main(String[])方法的类,因为这是标准的Java调用。

但请注意,-h目前仍将打印0.6.0 (2014, January),该值未针对0.6.5临时版本进行更新。它会被0.7.0撞到。因此,该版本号不可靠。

至于你观察到的差异:尝试将k变为1.如果我没记错,我们改变了k参数的含义,使其在不同的算法中更加一致。 (无论如何,它们在文献中并不一致。)