【发布时间】:2015-05-04 06:39:27
【问题描述】:
我正在处理高维和大型数据集,所以我需要从ResultWriter 的输出中获取前 N 个异常值。
elki 中有一些选项可以从该输出中获取前 N 个异常值?
【问题讨论】:
标签: data-mining outliers elki
我正在处理高维和大型数据集,所以我需要从ResultWriter 的输出中获取前 N 个异常值。
elki 中有一些选项可以从该输出中获取前 N 个异常值?
【问题讨论】:
标签: data-mining outliers elki
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());。因此,结果是按分数排序。非常感谢。