de.lmu.ifi.dbs.elki.database.relation.RelationUtil类的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(12.1k)|赞(0)|评价(0)|浏览(100)

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

RelationUtil介绍

[英]Utility functions for handling database relation.
[中]用于处理数据库关系的实用函数。

代码示例

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

/**
 * Constructor.
 *
 * @param rel Relation
 * @param maxdim Maximum dimension to use
 */
public HistogramProjector(Relation<V> rel, int maxdim) {
 super();
 this.rel = rel;
 this.dmax = maxdim;
 assert(maxdim <= RelationUtil.dimensionality(rel)) : "Requested dimensionality larger than data dimensionality?!?";
}

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

/**
 * Get the mean as vector.
 * 
 * @param relation Data relation
 * @param <F> vector type
 * @return Mean vector
 */
public <F extends NumberVector> F getMeanVector(Relation<? extends F> relation) {
 return RelationUtil.getNumberVectorFactory(relation).newNumberVector(mean);
}

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

@Override
public Collection<? extends NumberVector> getReferencePoints(Relation<? extends NumberVector> db) {
 double[][] minmax = RelationUtil.computeMinMax(db);
 int dim = RelationUtil.dimensionality(db);
 // Compute mean and extend from minmax.
 double[] mean = minmax[0], delta = minmax[1];
 for(int d = 0; d < dim; d++) {
  delta[d] -= mean[d];
  mean[d] -= delta[d] * .5;
 }
 Random rand = rnd.getSingleThreadedRandom();
 ArrayList<DoubleVector> result = new ArrayList<>(samplesize);
 for(int i = 0; i < samplesize; i++) {
  double[] vec = new double[dim];
  for(int d = 0; d < dim; d++) {
   vec[d] = mean[d] + (rand.nextDouble() - 0.5) * scale * delta[d];
  }
  result.add(DoubleVector.wrap(vec));
 }
 return result;
}

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

/**
 * Run the Eclat algorithm
 * 
 * @param db Database to process
 * @param relation Bit vector relation
 * @return Frequent patterns found
 */
public FrequentItemsetsResult run(Database db, final Relation<BitVector> relation) {
 // TODO: implement with resizable arrays, to not need dim.
 final int dim = RelationUtil.dimensionality(relation);
 final VectorFieldTypeInformation<BitVector> meta = RelationUtil.assumeVectorField(relation);
 // Compute absolute minsupport
 final int minsupp = getMinimumSupport(relation.size());
 LOG.verbose("Build 1-dimensional transaction lists.");
 Duration ctime = LOG.newDuration(STAT + "eclat.transposition.time").begin();
 DBIDs[] idx = buildIndex(relation, dim, minsupp);
 LOG.statistics(ctime.end());
 FiniteProgress prog = LOG.isVerbose() ? new FiniteProgress("Building frequent itemsets", idx.length, LOG) : null;
 Duration etime = LOG.newDuration(STAT + "eclat.extraction.time").begin();
 final List<Itemset> solution = new ArrayList<>();
 for(int i = 0; i < idx.length; i++) {
  LOG.incrementProcessed(prog);
  extractItemsets(idx, i, minsupp, solution);
 }
 LOG.ensureCompleted(prog);
 Collections.sort(solution);
 LOG.statistics(etime.end());
 LOG.statistics(new LongStatistic(STAT + "frequent-itemsets", solution.size()));
 return new FrequentItemsetsResult("Eclat", "eclat", solution, meta);
}

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

@Override
public double[][] chooseInitialMeans(Database database, Relation<? extends NumberVector> relation, int k, NumberVectorDistanceFunction<?> distanceFunction) {
 double[][] minmax = RelationUtil.computeMinMax(relation);
 final int dim = minmax[0].length;
 double[] min = minmax[0], scale = minmax[1];
 for(int d = 0; d < dim; d++) {
  scale[d] = scale[d] - min[d];
 }
 double[][] means = new double[k][];
 final Random random = rnd.getSingleThreadedRandom();
 for(int i = 0; i < k; i++) {
  double[] r = new double[dim];
  for(int d = 0; d < dim; d++) {
   r[d] = min[d] + scale[d] * random.nextDouble();
  }
  means[i] = r;
 }
 return means;
}

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

/**
 * Get the number vector factory of a database relation.
 *
 * @param relation relation
 * @param <V> Vector type
 * @return Vector field type information
 */
public static <V extends NumberVector> NumberVector.Factory<V> getNumberVectorFactory(Relation<V> relation) {
 final VectorFieldTypeInformation<V> type = assumeVectorField(relation);
 @SuppressWarnings("unchecked")
 final NumberVector.Factory<V> factory = (NumberVector.Factory<V>) type.getFactory();
 return factory;
}

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

/**
 * Run the Eclat algorithm
 * 
 * @param db Database to process
 * @param relation Bit vector relation
 * @return Frequent patterns found
 */
public FrequentItemsetsResult run(Database db, final Relation<BitVector> relation) {
 // TODO: implement with resizable arrays, to not need dim.
 final int dim = RelationUtil.dimensionality(relation);
 final VectorFieldTypeInformation<BitVector> meta = RelationUtil.assumeVectorField(relation);
 // Compute absolute minsupport
 final int minsupp = getMinimumSupport(relation.size());
 LOG.verbose("Build 1-dimensional transaction lists.");
 Duration ctime = LOG.newDuration(STAT + "eclat.transposition.time").begin();
 DBIDs[] idx = buildIndex(relation, dim, minsupp);
 LOG.statistics(ctime.end());
 FiniteProgress prog = LOG.isVerbose() ? new FiniteProgress("Building frequent itemsets", idx.length, LOG) : null;
 Duration etime = LOG.newDuration(STAT + "eclat.extraction.time").begin();
 final List<Itemset> solution = new ArrayList<>();
 for(int i = 0; i < idx.length; i++) {
  LOG.incrementProcessed(prog);
  extractItemsets(idx, i, minsupp, solution);
 }
 LOG.ensureCompleted(prog);
 Collections.sort(solution);
 LOG.statistics(etime.end());
 LOG.statistics(new LongStatistic(STAT + "frequent-itemsets", solution.size()));
 return new FrequentItemsetsResult("Eclat", "eclat", solution, meta, relation.size());
}

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

@Override
public double[][] chooseInitialMeans(Database database, Relation<? extends NumberVector> relation, int k, NumberVectorDistanceFunction<?> distanceFunction) {
 double[][] minmax = RelationUtil.computeMinMax(relation);
 final int dim = minmax[0].length;
 double[] min = minmax[0], scale = minmax[1];
 for(int d = 0; d < dim; d++) {
  scale[d] = scale[d] - min[d];
 }
 double[][] means = new double[k][];
 final Random random = rnd.getSingleThreadedRandom();
 for(int i = 0; i < k; i++) {
  double[] r = new double[dim];
  for(int d = 0; d < dim; d++) {
   r[d] = min[d] + scale[d] * random.nextDouble();
  }
  means[i] = r;
 }
 return means;
}

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

/**
 * Get the number vector factory of a database relation.
 *
 * @param relation relation
 * @param <V> Vector type
 * @return Vector field type information
 */
public static <V extends NumberVector> NumberVector.Factory<V> getNumberVectorFactory(Relation<V> relation) {
 final VectorFieldTypeInformation<V> type = assumeVectorField(relation);
 @SuppressWarnings("unchecked")
 final NumberVector.Factory<V> factory = (NumberVector.Factory<V>) type.getFactory();
 return factory;
}

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

/**
 * Constructor.
 *
 * @param rel Relation
 * @param maxdim Maximum dimension to use
 */
public ScatterPlotProjector(Relation<V> rel, int maxdim) {
 super();
 this.rel = rel;
 this.dmax = maxdim;
 assert (maxdim <= RelationUtil.dimensionality(rel)) : "Requested dimensionality larger than data dimensionality?!?";
}

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

@Override
public Collection<? extends NumberVector> getReferencePoints(Relation<? extends NumberVector> db) {
 double[][] minmax = RelationUtil.computeMinMax(db);
 int dim = RelationUtil.dimensionality(db);
 // Compute mean and extend from minmax.
 double[] mean = minmax[0], delta = minmax[1];
 for(int d = 0; d < dim; d++) {
  delta[d] -= mean[d];
  mean[d] -= delta[d] * .5;
 }
 Random rand = rnd.getSingleThreadedRandom();
 ArrayList<Vector> result = new ArrayList<>(samplesize);
 double[] vec = new double[dim];
 for(int i = 0; i < samplesize; i++) {
  for(int d = 0; d < dim; d++) {
   vec[d] = mean[d] + (rand.nextDouble() - 0.5) * scale * delta[d];
  }
  Vector newp = new Vector(vec);
  result.add(newp);
 }
 return result;
}

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

/**
 * Run the Eclat algorithm
 * 
 * @param db Database to process
 * @param relation Bit vector relation
 * @return Frequent patterns found
 */
public FrequentItemsetsResult run(Database db, final Relation<BitVector> relation) {
 // TODO: implement with resizable arrays, to not need dim.
 final int dim = RelationUtil.dimensionality(relation);
 final VectorFieldTypeInformation<BitVector> meta = RelationUtil.assumeVectorField(relation);
 // Compute absolute minsupport
 final int minsupp = getMinimumSupport(relation.size());
 LOG.verbose("Build 1-dimensional transaction lists.");
 Duration ctime = LOG.newDuration(STAT + "eclat.transposition.time").begin();
 DBIDs[] idx = buildIndex(relation, dim, minsupp);
 LOG.statistics(ctime.end());
 FiniteProgress prog = LOG.isVerbose() ? new FiniteProgress("Building frequent itemsets", idx.length, LOG) : null;
 Duration etime = LOG.newDuration(STAT + "eclat.extraction.time").begin();
 final List<Itemset> solution = new ArrayList<>();
 for(int i = 0; i < idx.length; i++) {
  LOG.incrementProcessed(prog);
  extractItemsets(idx, i, minsupp, solution);
 }
 LOG.ensureCompleted(prog);
 Collections.sort(solution);
 LOG.statistics(etime.end());
 LOG.statistics(new LongStatistic(STAT + "frequent-itemsets", solution.size()));
 return new FrequentItemsetsResult("Eclat", "eclat", solution, meta, relation.size());
}

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

/**
 * Get the mean as vector.
 * 
 * @param relation Data relation
 * @param <F> vector type
 * @return Mean vector
 */
public <F extends NumberVector> F getMeanVector(Relation<? extends F> relation) {
 return RelationUtil.getNumberVectorFactory(relation).newNumberVector(mean);
}

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

/**
 * Add scales to a single vector relation.
 *
 * @param rel Relation
 * @return Scales
 */
private ScalesResult run(Relation<? extends NumberVector> rel) {
 double[][] mms = RelationUtil.computeMinMax(rel);
 int dim = mms[0].length;
 double delta = 0.;
 for(int d = 0; d < dim; d++) {
  double del = mms[1][d] - mms[0][d];
  delta = del > delta ? del : delta;
 }
 if(delta < Double.MIN_NORMAL) {
  delta = 1.;
 }
 int log10res = (int) Math.ceil(Math.log10(delta / (LinearScale.MAXTICKS - 1)));
 double res = MathUtil.powi(10, log10res);
 double target = Math.ceil(delta / res) * res; // Target width
 LinearScale[] scales = new LinearScale[dim];
 for(int d = 0; d < dim; d++) {
  double mid = (mms[0][d] + mms[1][d] - target) * .5;
  double min = Math.floor(mid / res) * res;
  double max = Math.ceil((mid + target) / res) * res;
  scales[d] = new LinearScale(min, max);
 }
 return new ScalesResult(scales);
}

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

/**
 * Get the number vector factory of a database relation.
 *
 * @param relation relation
 * @param <V> Vector type
 * @return Vector field type information
 */
public static <V extends NumberVector> NumberVector.Factory<V> getNumberVectorFactory(Relation<V> relation) {
 final VectorFieldTypeInformation<V> type = assumeVectorField(relation);
 @SuppressWarnings("unchecked")
 final NumberVector.Factory<V> factory = (NumberVector.Factory<V>) type.getFactory();
 return factory;
}

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

/**
 * Constructor.
 *
 * @param rel Relation
 * @param maxdim Maximum dimension to use
 */
public HistogramProjector(Relation<V> rel, int maxdim) {
 super();
 this.rel = rel;
 this.dmax = maxdim;
 assert(maxdim <= RelationUtil.dimensionality(rel)) : "Requested dimensionality larger than data dimensionality?!?";
}

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

@Override
public Collection<? extends NumberVector> getReferencePoints(Relation<? extends NumberVector> db) {
 double[][] minmax = RelationUtil.computeMinMax(db);
 int dim = RelationUtil.dimensionality(db);
 // Compute mean and extend from minmax.
 double[] mean = minmax[0], delta = minmax[1];
 for(int d = 0; d < dim; d++) {
  delta[d] -= mean[d];
  mean[d] -= delta[d] * .5;
 }
 Random rand = rnd.getSingleThreadedRandom();
 ArrayList<DoubleVector> result = new ArrayList<>(samplesize);
 for(int i = 0; i < samplesize; i++) {
  double[] vec = new double[dim];
  for(int d = 0; d < dim; d++) {
   vec[d] = mean[d] + (rand.nextDouble() - 0.5) * scale * delta[d];
  }
  result.add(DoubleVector.wrap(vec));
 }
 return result;
}

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

/**
 * Get the data as vector.
 * 
 * @param relation Data relation
 * @param <F> vector type
 * @return the data
 */
public <F extends NumberVector> F toVector(Relation<? extends F> relation) {
 return RelationUtil.getNumberVectorFactory(relation).newNumberVector(elements);
}

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

double[][] minmax = RelationUtil.computeMinMax(relation);
final double[] dmin = minmax[0], dmax = minmax[1];
for(int d = 0; d < dim; d++) {

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

NumberVector.Factory<O> factory = (NumberVector.Factory<O>) RelationUtil.assumeVectorField(relation).getFactory();
List<? extends Cluster<?>> clusters = c.getAllClusters();
for(Cluster<?> cluster : clusters) {

相关文章