本文整理了Java中de.lmu.ifi.dbs.elki.data.VectorUtil
类的一些代码示例,展示了VectorUtil
类的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。VectorUtil
类的具体详情如下:
包路径:de.lmu.ifi.dbs.elki.data.VectorUtil
类名称:VectorUtil
[英]Utility functions for use with vectors. Note: obviously, many functions are class methods or database related. TODO: add more precise but slower O(n^2) angle computation according to: Computing the Angle between Vectors, P. Schatte Journal of Computing, Volume 63, Number 1 (1999)
[中]用于向量的实用函数。注意:显然,许多函数都与类方法或数据库有关。TODO:增加更精确但速度较慢的O(n^2)角度计算,参考:计算向量之间的角度,P.Schatte计算杂志,第63卷,第1期(1999年)
代码示例来源:origin: elki-project/elki
/**
* Computes the cosine distance for two given feature vectors.
*
* The cosine distance is computed from the cosine similarity by
* 1-(cosine similarity)
.
*
* @param v1 first feature vector
* @param v2 second feature vector
* @return the cosine distance for two given feature vectors v1 and v2
*/
@Override
public double distance(NumberVector v1, NumberVector v2) {
double d = VectorUtil.cosAngle(v1, v2);
return (d <= 1) ? 1 - d : 0;
}
代码示例来源:origin: elki-project/elki
/**
* Produce a new vector based on random numbers in [0:1].
*
* @param factory Vector factory
* @param dim desired dimensionality
* @param
* @return new instance
*/
public static
return randomVector(factory, dim, new Random());
}
代码示例来源:origin: de.lmu.ifi.dbs.elki/elki-core-api
/**
* Compute the absolute cosine of the angle between two vectors.
*
* To convert it to radians, use Math.acos(angle)
!
*
* @param v1 first vector
* @param v2 second vector
* @return Angle
*/
public static double cosAngle(NumberVector v1, NumberVector v2) {
// Java Hotspot appears to optimize these better than if-then-else:
return v1 instanceof SparseNumberVector ? //
v2 instanceof SparseNumberVector ? //
angleSparse((SparseNumberVector) v1, (SparseNumberVector) v2) : //
angleSparseDense((SparseNumberVector) v1, v2) : //
v2 instanceof SparseNumberVector ? //
angleSparseDense((SparseNumberVector) v2, v1) : //
angleDense(v1, v2);
}
代码示例来源:origin: elki-project/elki
SparseNumberVector s5 = new SparseFloatVector(new float[] { 0.f, 0.f, 0.f, 0.f, 5.f });
SparseNumberVector s6 = new SparseFloatVector(new float[] { });
assertEquals("Angle not exact.", 1., VectorUtil.angleDense(s2, d2), 0.);
assertEquals("Angle not exact.", 1., VectorUtil.angleSparseDense(s2, d2), 0.);
assertEquals("Angle not exact.", 1., VectorUtil.angleDense(s1, d1), 0.);
assertEquals("Angle not exact.", 1., VectorUtil.angleSparseDense(s1, d1), 0.);
assertEquals("Angle not exact.", 0.7142857142857143, VectorUtil.cosAngle(s1, s2), 0.);
assertEquals("Angle not exact.", 0.7142857142857143, VectorUtil.angleSparse(s1, s2), 0.);
assertEquals("Angle not exact.", 0.7142857142857143, VectorUtil.angleDense(s1, s2), 0.);
assertEquals("Angle not exact.", 0.7142857142857143, VectorUtil.cosAngle(d1, s2), 0.);
assertEquals("Angle not exact.", 0.7142857142857143, VectorUtil.angleDense(s2, d1), 0.);
assertEquals("Angle not exact.", 0.7142857142857143, VectorUtil.angleSparseDense(s2, d1), 0.);
assertEquals("Angle not exact.", 0.7142857142857143, VectorUtil.cosAngle(s1, d2), 0.);
assertEquals("Angle not exact.", 0.7142857142857143, VectorUtil.angleDense(s1, d2), 0.);
assertEquals("Angle not exact.", 0.7142857142857143, VectorUtil.angleSparseDense(s1, d2), 0.);
assertEquals("Angle not exact.", 0.8666666666666667, VectorUtil.cosAngle(s3, s4), 0.);
assertEquals("Angle not exact.", 0.8666666666666667, VectorUtil.angleSparse(s3, s4), 0.);
assertEquals("Angle not exact.", 0.8666666666666667, VectorUtil.angleDense(s3, s4), 0.);
assertEquals("Angle not exact.", 0.4879500364742666, VectorUtil.cosAngle(d1, s4), 0.);
assertEquals("Angle not exact.", 0.4879500364742666, VectorUtil.angleDense(s4, d1), 0.);
assertEquals("Angle not exact.", 0.4879500364742666, VectorUtil.angleSparseDense(s4, d1), 0.);
assertEquals("Angle not exact.", 0.4879500364742666, VectorUtil.cosAngle(s3, d2), 0.);
assertEquals("Angle not exact.", 0.4879500364742666, VectorUtil.angleDense(s3, d2), 0.);
assertEquals("Angle not exact.", 0.4879500364742666, VectorUtil.angleSparseDense(s3, d2), 0.);
assertEquals("Angle not exact.", 0., VectorUtil.angleSparseDense(s5, d1), 0.);
代码示例来源:origin: elki-project/elki
SparseNumberVector s2 = new SparseFloatVector(new float[] { 3.f, 2.f, 1.f });
assertEquals("Angle not exact.", 1., VectorUtil.cosAngle(s1, s1), 0.);
assertEquals("Angle not exact.", 1., VectorUtil.angleSparse(s1, s1), 0.);
assertEquals("Angle not exact.", 1., VectorUtil.angleDense(s1, s1), 0.);
assertEquals("Angle not exact.", 1., VectorUtil.cosAngle(s2, s2), 0.);
assertEquals("Angle not exact.", 1., VectorUtil.angleSparse(s2, s2), 0.);
assertEquals("Angle not exact.", 1., VectorUtil.angleDense(s2, s2), 0.);
assertEquals("Angle not exact.", 0.7142857142857143, VectorUtil.cosAngle(s1, s2), 0.);
assertEquals("Angle not exact.", 0.7142857142857143, VectorUtil.angleSparse(s1, s2), 0.);
assertEquals("Angle not exact.", 0.7142857142857143, VectorUtil.angleDense(s1, s2), 0.);
new float[] { 3.f, 2.f, -2.f, 1.f, -1.f, -3.f }, 100);
assertEquals("Angle not exact.", 1., VectorUtil.cosAngle(s3, s3), 0.);
assertEquals("Angle not exact.", 1., VectorUtil.angleDense(s3, s3), 0.);
assertEquals("Angle not exact.", 1., VectorUtil.angleSparse(s3, s3), 0.);
assertEquals("Angle not exact.", 1., VectorUtil.cosAngle(s4, s4), 0.);
assertEquals("Angle not exact.", 1., VectorUtil.angleDense(s4, s4), 0.);
assertEquals("Angle not exact.", 1., VectorUtil.angleSparse(s4, s4), 0.);
assertEquals("Angle not exact.", 0.35714285714285715, VectorUtil.angleDense(s3, s4), 0.);
assertEquals("Angle not exact.", 0.35714285714285715, VectorUtil.cosAngle(s3, s4), 0.);
assertEquals("Angle not exact.", 0.35714285714285715, VectorUtil.angleSparse(s3, s4), 0.);
assertEquals("Angle not exact.", 0.35714285714285715, VectorUtil.angleDense(s4, s3), 0.);
assertEquals("Angle not exact.", 0.35714285714285715, VectorUtil.cosAngle(s4, s3), 0.);
assertEquals("Angle not exact.", 0.35714285714285715, VectorUtil.angleSparse(s4, s3), 0.);
代码示例来源:origin: elki-project/elki
@Test
public void denseAngle() {
NumberVector v1 = new DoubleVector(new double[] { 1.0, 2.0, 3.0 });
NumberVector v2 = new FloatVector(new float[] { 3.f, 2.f, 1.f });
NumberVector v3 = new ByteVector(new byte[] { 1, 2, 3, 0 });
NumberVector v4 = new IntegerVector(new int[] { 3, 2, 1, 0 });
// Exact: (3+4+3)/(1+4+9) = 0.7142857142857143
assertEquals("Angle not exact.", 1., VectorUtil.cosAngle(v1, v1), 0.);
assertEquals("Angle not exact.", 1., VectorUtil.cosAngle(v2, v2), 0.);
assertEquals("Angle not exact.", 1., VectorUtil.cosAngle(v1, v3), 0.);
assertEquals("Angle not exact.", 1., VectorUtil.cosAngle(v2, v4), 0.);
assertEquals("Angle not exact.", 1., VectorUtil.cosAngle(v3, v1), 0.);
assertEquals("Angle not exact.", 1., VectorUtil.cosAngle(v4, v2), 0.);
assertEquals("Angle not exact.", 0.7142857142857143, VectorUtil.cosAngle(v1, v2), 0.);
assertEquals("Angle not exact.", 0.7142857142857143, VectorUtil.angleDense(v1, v2), 0.);
assertEquals("Angle not exact.", 0.7142857142857143, VectorUtil.cosAngle(v2, v1), 0.);
assertEquals("Angle not exact.", 0.7142857142857143, VectorUtil.angleDense(v2, v1), 0.);
}
代码示例来源:origin: elki-project/elki
@Override
public double similarity(final NumberVector o1, final NumberVector o2) {
return VectorUtil.dot(o1, o2);
}
代码示例来源:origin: de.lmu.ifi.dbs.elki/elki
@Override
public double minDist(SpatialComparable mbr1, SpatialComparable mbr2) {
double d = 1 - VectorUtil.minCosAngle(mbr1, mbr2);
if (d <0) {
d = 0;
}
return d;
}
代码示例来源:origin: elki-project/elki
@Override
protected V filterSingleObject(V obj) {
return VectorUtil.project(obj, selectedAttributes, factory);
}
代码示例来源:origin: de.lmu.ifi.dbs.elki/elki
return angleSparse((SparseNumberVector) v1, (SparseNumberVector) v2);
代码示例来源:origin: de.lmu.ifi.dbs.elki/elki-core-distance
@Override
public double similarity(final NumberVector o1, final NumberVector o2) {
return VectorUtil.dot(o1, o2);
}
代码示例来源:origin: elki-project/elki
@Override
public double minDist(SpatialComparable mbr1, SpatialComparable mbr2) {
double d = VectorUtil.minCosAngle(mbr1, mbr2);
return (d <= 1) ? 1 - d : 0;
}
代码示例来源:origin: de.lmu.ifi.dbs.elki/elki
@Override
protected V filterSingleObject(V obj) {
return VectorUtil.project(obj, selectedAttributes, factory);
}
代码示例来源:origin: de.lmu.ifi.dbs.elki/elki-core-distance
/**
* Computes the cosine distance for two given feature vectors.
*
* The cosine distance is computed from the cosine similarity by
* 1-(cosine similarity)
.
*
* @param v1 first feature vector
* @param v2 second feature vector
* @return the cosine distance for two given feature vectors v1 and v2
*/
@Override
public double distance(NumberVector v1, NumberVector v2) {
double d = VectorUtil.cosAngle(v1, v2);
return (d <= 1) ? 1 - d : 0;
}
代码示例来源:origin: de.lmu.ifi.dbs.elki/elki-core-api
/**
* Produce a new vector based on random numbers in [0:1].
*
* @param factory Vector factory
* @param dim desired dimensionality
* @param
* @return new instance
*/
public static
return randomVector(factory, dim, new Random());
}
代码示例来源:origin: elki-project/elki
/**
* Compute the absolute cosine of the angle between two vectors.
*
* To convert it to radians, use Math.acos(angle)
!
*
* @param v1 first vector
* @param v2 second vector
* @return Angle
*/
public static double cosAngle(NumberVector v1, NumberVector v2) {
// Java Hotspot appears to optimize these better than if-then-else:
return v1 instanceof SparseNumberVector ? //
v2 instanceof SparseNumberVector ? //
angleSparse((SparseNumberVector) v1, (SparseNumberVector) v2) : //
angleSparseDense((SparseNumberVector) v1, v2) : //
v2 instanceof SparseNumberVector ? //
angleSparseDense((SparseNumberVector) v2, v1) : //
angleDense(v1, v2);
}
代码示例来源:origin: de.lmu.ifi.dbs.elki/elki-core-distance
/**
* Computes the cosine distance for two given feature vectors.
*
* The cosine distance is computed from the cosine similarity by
* 1-(cosine similarity)
.
*
* @param v1 first feature vector
* @param v2 second feature vector
* @return the cosine distance for two given feature vectors v1 and v2
*/
@Override
public double distance(NumberVector v1, NumberVector v2) {
double d = VectorUtil.dot(v1, v2);
return (d <= 1) ? 1 - d : 0;
}
代码示例来源:origin: de.lmu.ifi.dbs.elki/elki-core-distance
@Override
public double minDist(SpatialComparable mbr1, SpatialComparable mbr2) {
double d = VectorUtil.minCosAngle(mbr1, mbr2);
return (d <= 1) ? 1 - d : 0;
}
代码示例来源:origin: de.lmu.ifi.dbs.elki/elki-input
@Override
protected V filterSingleObject(V obj) {
return VectorUtil.project(obj, selectedAttributes, factory);
}
代码示例来源:origin: de.lmu.ifi.dbs.elki/elki
/**
* Computes the cosine distance for two given feature vectors.
*
* The cosine distance is computed from the cosine similarity by
* 1-(cosine similarity)
.
*
* @param v1 first feature vector
* @param v2 second feature vector
* @return the cosine distance for two given feature vectors v1 and v2
*/
@Override
public double distance(NumberVector v1, NumberVector v2) {
double d = 1 - VectorUtil.cosAngle(v1, v2);
if (d <0) {
d = 0;
}
return d;
}