【问题标题】:Top n outliers in ResultWriterResultWriter 中的前 n 个异常值
【发布时间】:2015-05-04 06:39:27
【问题描述】:

我正在处理高维和大型数据集,所以我需要从ResultWriter 的输出中获取前 N 个异常值。 elki 中有一些选项可以从该输出中获取前 N 个异常值?

【问题讨论】:

    标签: data-mining outliers elki


    【解决方案1】:

    ResultWriter 是 ELKI 中最古老的代码,需要重写。它相当通用 - 它试图找出如何最好地将输出序列化为文本。

    如果您想要某种特定格式或特定子集,正确的方法是编写您自己的ResultHandler。有一个tutorial for writing a ResultHandler

    如果要在结果中查找输入坐标,

    Database db = ResultUtil.findDatabase(baseResult);
    Relation<NumberVector> rel = db.getRelation(TypeUtil.NUMBER_VECTOR_VARIABLE_LENGTH);
    

    将返回第一个包含数字向量的关系。

    要遍历按异常值排序的对象,请使用:

    OrderingResult order = outlierResult.getOrdering();
    DBIDs ids = order.order(order.getDBIDs());
    for (DBIDIter it = ids.iter(); it.valid(); it.advance()) {
      // Output as desired.
    }
    

    【讨论】:

    • 您好,埃里希,感谢您的回答。我已经实现了,但是在DBIDs ids = order.order(order.getDBIDs()); 行中我得到了一个错误。所以我已经改为DBIDs ids = order.getDBIDs(); 这种方式运行但它是按ID排序,而不是按分数排序。它是否存在按分数排序的方法?我在 javadoc 中寻找,但找不到。
    • 我明白了。我已更改为DBIDs ids = order.iter(order.getDBIDs());。因此,结果是按分数排序。非常感谢。
    猜你喜欢
    • 2013-12-19
    • 2017-12-06
    • 2021-03-04
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 2019-11-13
    • 2020-02-04
    相关资源
    最近更新 更多