本文整理了Java中de.lmu.ifi.dbs.elki.database.relation.RelationUtil
类的一些代码示例,展示了RelationUtil
类的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。RelationUtil
类的具体详情如下:
包路径:de.lmu.ifi.dbs.elki.database.relation.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) {
内容来源于网络,如有侵权,请联系作者删除!