de.lmu.ifi.dbs.elki.database.query.knn.KNNQuery类的使用及代码示例

x33g5p2x  于2022-01-23 转载在 其他  
字(8.3k)|赞(0)|评价(0)|浏览(155)

本文整理了Java中de.lmu.ifi.dbs.elki.database.query.knn.KNNQuery类的一些代码示例,展示了KNNQuery类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。KNNQuery类的具体详情如下:
包路径:de.lmu.ifi.dbs.elki.database.query.knn.KNNQuery
类名称:KNNQuery

KNNQuery介绍

[英]The interface of an actual instance.
[中]实际实例的接口。

代码示例

代码示例来源:origin: elki-project/elki

@Override
protected KNNList objectsForPCA(DBIDRef id) {
 return knnQuery.getKNNForDBID(id, k);
}

代码示例来源:origin: elki-project/elki

/**
 * @return a new MkMaxLeafEntry representing the specified data object
 */
protected MkMaxLeafEntry createNewLeafEntry(DBID id, O object, double parentDistance) {
 KNNList knns = knnq.getKNNForObject(object, getKmax() - 1);
 double knnDistance = knns.getKNNDistance();
 return new MkMaxLeafEntry(id, parentDistance, knnDistance);
}

代码示例来源:origin: elki-project/elki

/**
 * Performs a bulk load on this RTree with the specified data. Is called by
 * the constructor and should be overwritten by subclasses if necessary.
 */
@Override
protected void bulkLoad(List<RdKNNEntry> entries) {
 super.bulkLoad(entries);
 // adjust all knn distances
 ArrayModifiableDBIDs ids = DBIDUtil.newArray(entries.size());
 for(RdKNNEntry entry : entries) {
  DBID id = ((RdKNNLeafEntry) entry).getDBID();
  ids.add(id);
 }
 ids.sort();
 List<? extends KNNList> knnLists = knnQuery.getKNNForBulkDBIDs(ids, settings.k_max);
 adjustKNNDistance(getRootEntry(), ids, knnLists);
 // test
 doExtraIntegrityChecks();
}

代码示例来源:origin: de.lmu.ifi.dbs.elki/elki

/**
 * Performs a bulk load on this RTree with the specified data. Is called by
 * the constructor and should be overwritten by subclasses if necessary.
 */
@Override
protected void bulkLoad(List<RdKNNEntry> entries) {
 super.bulkLoad(entries);
 // adjust all knn distances
 ArrayModifiableDBIDs ids = DBIDUtil.newArray(entries.size());
 for(RdKNNEntry entry : entries) {
  DBID id = ((RdKNNLeafEntry) entry).getDBID();
  ids.add(id);
 }
 ids.sort();
 List<? extends KNNList> knnLists = knnQuery.getKNNForBulkDBIDs(ids, settings.k_max);
 adjustKNNDistance(getRootEntry(), ids, knnLists);
 // test
 doExtraIntegrityChecks();
}

代码示例来源:origin: de.lmu.ifi.dbs.elki/elki

@Override
protected KNNList objectsForPCA(DBIDRef id) {
 return knnQuery.getKNNForDBID(id, k);
}

代码示例来源:origin: elki-project/elki

@Override
public DoubleDBIDList getRKNNForObject(O obj, int k) {
 ModifiableDoubleDBIDList rNNlist = DBIDUtil.newDistanceDBIDList();
 ArrayDBIDs allIDs = DBIDUtil.ensureArray(relation.getDBIDs());
 List<? extends KNNList> kNNLists = knnQuery.getKNNForBulkDBIDs(allIDs, k);
 for(DBIDArrayIter iter = allIDs.iter(); iter.valid(); iter.advance()) {
  KNNList knn = kNNLists.get(iter.getOffset());
  final double dist = distanceQuery.distance(obj, iter);
  final int last = Math.min(k - 1, knn.size() - 1);
  if(last < k - 1 || dist <= knn.doubleValue(last)) {
   rNNlist.add(dist, iter);
  }
 }
 rNNlist.sort();
 return rNNlist;
}

代码示例来源:origin: elki-project/elki

public double[] classProbabilities(O instance, ArrayList<ClassLabel> labels) {
 int[] occurences = new int[labels.size()];
 KNNList query = knnq.getKNNForObject(instance, k);
 for(DoubleDBIDListIter neighbor = query.iter(); neighbor.valid(); neighbor.advance()) {
  int index = Collections.binarySearch(labels, labelrep.get(neighbor));
  if(index >= 0) {
   occurences[index]++;
  }
 }
 double[] distribution = new double[labels.size()];
 for(int i = 0; i < distribution.length; i++) {
  distribution[i] = ((double) occurences[i]) / (double) query.size();
 }
 return distribution;
}

代码示例来源:origin: de.lmu.ifi.dbs.elki/elki-clustering

@Override
protected KNNList objectsForPCA(DBIDRef id) {
 return knnQuery.getKNNForDBID(id, k);
}

代码示例来源:origin: de.lmu.ifi.dbs.elki/elki-index-rtree

/**
 * Performs a bulk load on this RTree with the specified data. Is called by
 * the constructor and should be overwritten by subclasses if necessary.
 */
@Override
protected void bulkLoad(List<RdKNNEntry> entries) {
 super.bulkLoad(entries);
 // adjust all knn distances
 ArrayModifiableDBIDs ids = DBIDUtil.newArray(entries.size());
 for(RdKNNEntry entry : entries) {
  DBID id = ((RdKNNLeafEntry) entry).getDBID();
  ids.add(id);
 }
 ids.sort();
 List<? extends KNNList> knnLists = knnQuery.getKNNForBulkDBIDs(ids, settings.k_max);
 adjustKNNDistance(getRootEntry(), ids, knnLists);
 // test
 doExtraIntegrityChecks();
}

代码示例来源:origin: de.lmu.ifi.dbs.elki/elki-index-mtree

/**
 * @return a new MkMaxLeafEntry representing the specified data object
 */
protected MkMaxLeafEntry createNewLeafEntry(DBID id, O object, double parentDistance) {
 KNNList knns = knnq.getKNNForObject(object, getKmax() - 1);
 double knnDistance = knns.getKNNDistance();
 return new MkMaxLeafEntry(id, parentDistance, knnDistance);
}

代码示例来源:origin: elki-project/elki

@Override
 public void map(DBIDRef id) {
  out.set(knnq.getKNNForDBID(id, k));
 }
}

代码示例来源:origin: de.lmu.ifi.dbs.elki/elki-database

@Override
public DoubleDBIDList getRKNNForObject(O obj, int k) {
 ModifiableDoubleDBIDList rNNlist = DBIDUtil.newDistanceDBIDList();
 ArrayDBIDs allIDs = DBIDUtil.ensureArray(relation.getDBIDs());
 List<? extends KNNList> kNNLists = knnQuery.getKNNForBulkDBIDs(allIDs, k);
 for(DBIDArrayIter iter = allIDs.iter(); iter.valid(); iter.advance()) {
  KNNList knn = kNNLists.get(iter.getOffset());
  final double dist = distanceQuery.distance(obj, iter);
  final int last = Math.min(k - 1, knn.size() - 1);
  if(last < k - 1 || dist <= knn.doubleValue(last)) {
   rNNlist.add(dist, iter);
  }
 }
 rNNlist.sort();
 return rNNlist;
}

代码示例来源:origin: de.lmu.ifi.dbs.elki/elki-classification

public double[] classProbabilities(O instance, ArrayList<ClassLabel> labels) {
 int[] occurences = new int[labels.size()];
 KNNList query = knnq.getKNNForObject(instance, k);
 for(DoubleDBIDListIter neighbor = query.iter(); neighbor.valid(); neighbor.advance()) {
  int index = Collections.binarySearch(labels, labelrep.get(neighbor));
  if(index >= 0) {
   occurences[index]++;
  }
 }
 double[] distribution = new double[labels.size()];
 for(int i = 0; i < distribution.length; i++) {
  distribution[i] = ((double) occurences[i]) / (double) query.size();
 }
 return distribution;
}

代码示例来源:origin: de.lmu.ifi.dbs.elki/elki

@Override
 public void map(DBIDRef id) {
  out.set(knnq.getKNNForDBID(id, k));
 }
}

代码示例来源:origin: de.lmu.ifi.dbs.elki/elki

@Override
public DoubleDBIDList getRKNNForObject(O obj, int k) {
 ModifiableDoubleDBIDList rNNlist = DBIDUtil.newDistanceDBIDList();
 ArrayDBIDs allIDs = DBIDUtil.ensureArray(relation.getDBIDs());
 List<? extends KNNList> kNNLists = knnQuery.getKNNForBulkDBIDs(allIDs, k);
 int i = 0;
 for(DBIDIter iter = allIDs.iter(); iter.valid(); iter.advance()) {
  KNNList knn = kNNLists.get(i);
  int last = Math.min(k - 1, knn.size() - 1);
  double dist = distanceQuery.distance(obj, iter);
  if(last < k - 1 || dist <= knn.get(last).doubleValue()) {
   rNNlist.add(dist, iter);
  }
  i++;
 }
 rNNlist.sort();
 return rNNlist;
}

代码示例来源:origin: de.lmu.ifi.dbs.elki/elki

public double[] classProbabilities(O instance, ArrayList<ClassLabel> labels) {
 int[] occurences = new int[labels.size()];
 KNNList query = knnq.getKNNForObject(instance, k);
 for(DoubleDBIDListIter neighbor = query.iter(); neighbor.valid(); neighbor.advance()) {
  int index = Collections.binarySearch(labels, labelrep.get(neighbor));
  if(index >= 0) {
   occurences[index]++;
  }
 }
 double[] distribution = new double[labels.size()];
 for(int i = 0; i < distribution.length; i++) {
  distribution[i] = ((double) occurences[i]) / (double) query.size();
 }
 return distribution;
}

代码示例来源:origin: de.lmu.ifi.dbs.elki/elki-core-parallel

@Override
 public void map(DBIDRef id) {
  out.set(knnq.getKNNForDBID(id, k));
 }
}

代码示例来源:origin: elki-project/elki

/**
 * Performs necessary operations after deleting the specified object.
 */
@Override
protected void postDelete(RdKNNEntry entry) {
 // reverse knn of o
 ModifiableDoubleDBIDList rnns = DBIDUtil.newDistanceDBIDList();
 doReverseKNN(getRoot(), ((RdKNNLeafEntry) entry).getDBID(), rnns);
 // knn of rnn
 ArrayModifiableDBIDs ids = DBIDUtil.newArray(rnns);
 ids.sort();
 List<? extends KNNList> knnLists = knnQuery.getKNNForBulkDBIDs(ids, settings.k_max);
 // adjust knn distances
 adjustKNNDistance(getRootEntry(), ids, knnLists);
}

代码示例来源:origin: de.lmu.ifi.dbs.elki/elki

/**
 * @return a new MkMaxLeafEntry representing the specified data object
 */
protected MkMaxLeafEntry createNewLeafEntry(DBID id, O object, double parentDistance) {
 KNNList knns = knnq.getKNNForObject(object, getKmax() - 1);
 double knnDistance = knns.getKNNDistance();
 return new MkMaxLeafEntry(id, parentDistance, knnDistance);
}

代码示例来源:origin: elki-project/elki

/**
  * Performs a batch k-nearest neighbor query for a list of query objects.
  * 
  * @param node the node representing the subtree on which the query should be
  *        performed
  * @param ids the ids of the query objects
  * @param kmax Maximum k value
  * 
  * @deprecated Change to use by-object NN lookups instead.
  */
 @Deprecated
 protected final Map<DBID, KNNList> batchNN(N node, DBIDs ids, int kmax) {
  Map<DBID, KNNList> res = new HashMap<>(ids.size());
  for(DBIDIter iter = ids.iter(); iter.valid(); iter.advance()) {
   DBID id = DBIDUtil.deref(iter);
   res.put(id, knnq.getKNNForDBID(id, kmax));
  }
  return res;
 }
}

相关文章

微信公众号

最新文章

更多