/** * Static Constructor from a relation. * * @param dims Dimensions to use (indexed with 0) * @param relation Relation to process * @return Centroid */ public static ProjectedCentroid make(long[] dims, Relation<? extends NumberVector> relation) { ProjectedCentroid c = new ProjectedCentroid(dims, RelationUtil.dimensionality(relation)); for(DBIDIter iditer = relation.iterDBIDs(); iditer.valid(); iditer.advance()) { c.put(relation.get(iditer)); } return c; }
Vector child_centroid = ProjectedCentroid.make(child.first, relation, child.second); List<ArrayModifiableDBIDs> parentList = clustersMap.get(parentPV); for(ArrayModifiableDBIDs parent : parentList) { Vector parent_centroid = ProjectedCentroid.make(parentPV, relation, parent); double d = weightedDistance(child_centroid, parent_centroid, parentPV); if(d <= 2 * epsilon) {
Centroid child_centroid = ProjectedCentroid.make(child.first, relation, child.second); List<ArrayModifiableDBIDs> parentList = clustersMap.get(parentPV); for(ArrayModifiableDBIDs parent : parentList) { NumberVector parent_centroid = ProjectedCentroid.make(parentPV, relation, parent); double d = weightedDistance(child_centroid, parent_centroid, parentPV); if(d <= 2 * epsilon) {
/** * Static Constructor from a relation. * * @param dims Dimensions to use (indexed with 0) * @param relation Relation to process * @return Centroid */ public static ProjectedCentroid make(long[] dims, Relation<? extends NumberVector> relation) { ProjectedCentroid c = new ProjectedCentroid(dims, RelationUtil.dimensionality(relation)); for(DBIDIter iditer = relation.iterDBIDs(); iditer.valid(); iditer.advance()) { c.put(relation.get(iditer)); } return c; }
final Subspace s_i = c_i.getModel().getSubspace(); int subspaceDim_i = dimensionality - s_i.dimensionality(); NumberVector ci_centroid = ProjectedCentroid.make(s_i.getDimensions(), database, c_i.getIDs()); long[] pv1 = s_i.getDimensions(); NumberVector cj_centroid = ProjectedCentroid.make(c_j.getModel().getDimensions(), database, c_j.getIDs()); long[] pv2 = s_j.getDimensions(); long[] commonPreferenceVector = BitsUtil.andCMin(pv1, pv2);
/** * Static Constructor from a relation. * * @param dims Dimensions to use (indexed with 0) * @param relation Relation to process * @return Centroid */ public static ProjectedCentroid make(long[] dims, Relation<? extends NumberVector> relation) { ProjectedCentroid c = new ProjectedCentroid(dims, RelationUtil.dimensionality(relation)); for(DBIDIter iditer = relation.iterDBIDs(); iditer.valid(); iditer.advance()) { c.put(relation.get(iditer)); } return c; }
final Subspace s_i = c_i.getModel().getSubspace(); int subspaceDim_i = dimensionality - s_i.dimensionality(); Vector ci_centroid = ProjectedCentroid.make(s_i.getDimensions(), database, c_i.getIDs()); long[] pv1 = s_i.getDimensions(); Vector cj_centroid = ProjectedCentroid.make(c_j.getModel().getDimensions(), database, c_j.getIDs()); long[] pv2 = s_j.getDimensions(); long[] commonPreferenceVector = BitsUtil.andCMin(pv1, pv2);
/** * Static Constructor from a relation. * * @param dims Dimensions to use (indexed with 0) * @param relation Relation to process * @param ids IDs to process * @return Centroid */ public static ProjectedCentroid make(long[] dims, Relation<? extends NumberVector> relation, DBIDs ids) { ProjectedCentroid c = new ProjectedCentroid(dims, RelationUtil.dimensionality(relation)); for(DBIDIter iter = ids.iter(); iter.valid(); iter.advance()) { c.put(relation.get(iter)); } return c; } }
/** * Returns true, if the specified parent cluster is a parent of one child of * the children clusters. * * @param relation the database containing the objects * @param parent the parent to be tested * @param iter the list of children to be tested * @param db_dim Database dimensionality * @return true, if the specified parent cluster is a parent of one child of * the children clusters, false otherwise */ private boolean isParent(Relation<V> relation, Cluster<SubspaceModel> parent, It<Cluster<SubspaceModel>> iter, int db_dim) { Subspace s_p = parent.getModel().getSubspace(); NumberVector parent_centroid = ProjectedCentroid.make(s_p.getDimensions(), relation, parent.getIDs()); int subspaceDim_parent = db_dim - s_p.dimensionality(); for(; iter.valid(); iter.advance()) { Cluster<SubspaceModel> child = iter.get(); Subspace s_c = child.getModel().getSubspace(); NumberVector child_centroid = ProjectedCentroid.make(s_c.getDimensions(), relation, child.getIDs()); long[] commonPreferenceVector = BitsUtil.andCMin(s_p.getDimensions(), s_c.getDimensions()); int subspaceDim = subspaceDimensionality(parent_centroid, child_centroid, s_p.getDimensions(), s_c.getDimensions(), commonPreferenceVector); if(subspaceDim == subspaceDim_parent) { return true; } } return false; }
/** * Static Constructor from a relation. * * @param dims Dimensions to use (indexed with 0) * @param relation Relation to process * @param ids IDs to process * @return Centroid */ public static ProjectedCentroid make(long[] dims, Relation<? extends NumberVector> relation, DBIDs ids) { ProjectedCentroid c = new ProjectedCentroid(dims, RelationUtil.dimensionality(relation)); for(DBIDIter iter = ids.iter(); iter.valid(); iter.advance()) { c.put(relation.get(iter)); } return c; } }
/** * Returns true, if the specified parent cluster is a parent of one child of * the children clusters. * * @param relation the database containing the objects * @param parent the parent to be tested * @param iter the list of children to be tested * @param db_dim Database dimensionality * @return true, if the specified parent cluster is a parent of one child of * the children clusters, false otherwise */ private boolean isParent(Relation<V> relation, Cluster<SubspaceModel> parent, Iter<Cluster<SubspaceModel>> iter, int db_dim) { Subspace s_p = parent.getModel().getSubspace(); Vector parent_centroid = ProjectedCentroid.make(s_p.getDimensions(), relation, parent.getIDs()); int subspaceDim_parent = db_dim - s_p.dimensionality(); for(; iter.valid(); iter.advance()) { Cluster<SubspaceModel> child = iter.get(); Subspace s_c = child.getModel().getSubspace(); Vector child_centroid = ProjectedCentroid.make(s_c.getDimensions(), relation, child.getIDs()); long[] commonPreferenceVector = BitsUtil.andCMin(s_p.getDimensions(), s_c.getDimensions()); int subspaceDim = subspaceDimensionality(parent_centroid, child_centroid, s_p.getDimensions(), s_c.getDimensions(), commonPreferenceVector); if(subspaceDim == subspaceDim_parent) { return true; } } return false; }
/** * Static Constructor from a relation. * * @param dims Dimensions to use (indexed with 0) * @param relation Relation to process * @param ids IDs to process * @return Centroid */ public static ProjectedCentroid make(long[] dims, Relation<? extends NumberVector> relation, DBIDs ids) { ProjectedCentroid c = new ProjectedCentroid(dims, RelationUtil.dimensionality(relation)); for(DBIDIter iter = ids.iter(); iter.valid(); iter.advance()) { c.put(relation.get(iter)); } return c; } }
NumberVector c_centroid = ProjectedCentroid.make(preferenceVector, relation, c); long[] commonPreferenceVector = BitsUtil.andCMin(preferenceVector, preferenceVector); int subspaceDim = subspaceDimensionality(object, c_centroid, preferenceVector, preferenceVector, commonPreferenceVector);
Vector c_centroid = ProjectedCentroid.make(preferenceVector, relation, c); long[] commonPreferenceVector = BitsUtil.andCMin(preferenceVector, preferenceVector); int subspaceDim = subspaceDimensionality(object, c_centroid, preferenceVector, preferenceVector, commonPreferenceVector);