本文整理了Java中org.apache.mahout.math.Matrix.viewDiagonal()
方法的一些代码示例,展示了Matrix.viewDiagonal()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Matrix.viewDiagonal()
方法的具体详情如下:
包路径:org.apache.mahout.math.Matrix
类名称:Matrix
方法名:viewDiagonal
[英]Returns a reference to the diagonal of a matrix. Changes to the view will change the original matrix.
[中]返回对矩阵对角线的引用。对视图的更改将更改原始矩阵。
代码示例来源:origin: apache/mahout
public DiagonalMatrix(Matrix values) {
this(values.viewDiagonal());
}
代码示例来源:origin: apache/mahout
/**
* Return the block diagonal eigenvalue matrix
*
* @return D
*/
public Matrix getD() {
Matrix x = new DenseMatrix(n, n);
x.assign(0);
x.viewDiagonal().assign(d);
for (int i = 0; i < n; i++) {
double v = e.getQuick(i);
if (v > 0) {
x.setQuick(i, i + 1, v);
} else if (v < 0) {
x.setQuick(i, i - 1, v);
}
}
return x;
}
代码示例来源:origin: apache/mahout
private static void decompositionSpeedCheck(Decomposer qrf, OnlineSummarizer s1, Matrix a, String label) {
int n = 0;
List<Integer> counts = Lists.newArrayList(10, 20, 50, 100, 200, 500);
for (int k : counts) {
double warmup = 0;
double other = 0;
n += k;
for (int i = 0; i < k; i++) {
QR qr = qrf.decompose(a);
warmup = Math.max(warmup, qr.getQ().transpose().times(qr.getQ()).viewDiagonal().assign(Functions.plus(-1)).norm(1));
Matrix z = qr.getQ().times(qr.getR()).minus(a);
other = Math.max(other, z.aggregate(Functions.MIN, Functions.ABS));
}
double maxIdent = 0;
double maxError = 0;
long t0 = System.nanoTime();
for (int i = 0; i < n; i++) {
QR qr = qrf.decompose(a);
maxIdent = Math.max(maxIdent, qr.getQ().transpose().times(qr.getQ()).viewDiagonal().assign(Functions.plus(-1)).norm(1));
Matrix z = qr.getQ().times(qr.getR()).minus(a);
maxError = Math.max(maxError, z.aggregate(Functions.MIN, Functions.ABS));
}
long t1 = System.nanoTime();
if (k > 100) {
s1.add(t1 - t0);
}
System.out.printf("%s %d\t%.1f\t%g\t%g\t%g\n", label, n, (t1 - t0) / 1.0e3 / n, maxIdent, maxError, warmup);
}
}
代码示例来源:origin: apache/mahout
@Test
public void testBasics() {
Matrix a = new DenseSymmetricMatrix(new double[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, false);
System.out.println(a.toString());
assertEquals(0, a.viewDiagonal().minus(new DenseVector(new double[]{1, 5, 8, 10})).norm(1), 1.0e-10);
assertEquals(0, a.viewPart(0, 3, 1, 3).viewDiagonal().minus(
new DenseVector(new double[]{2, 6, 9})).norm(1), 1.0e-10);
assertEquals(4, a.get(0, 3), 1.0e-10);
System.out.println(a);
Matrix m = new DenseMatrix(4, 4).assign(a);
assertEquals(0, m.minus(a).aggregate(Functions.PLUS, Functions.ABS), 1.0e-10);
System.out.println(m);
assertEquals(0, m.transpose().times(m).minus(a.transpose().times(a)).aggregate(
Functions.PLUS, Functions.ABS), 1.0e-10);
System.out.println(a.plus(a));
assertEquals(0, m.plus(m).minus(a.plus(a)).aggregate(Functions.PLUS, Functions.ABS), 1.0e-10);
}
代码示例来源:origin: apache/mahout
@Test
public void testBasics() {
Matrix a = new UpperTriangular(new double[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, false);
assertEquals(0, a.viewDiagonal().minus(new DenseVector(new double[]{1, 5, 8, 10})).norm(1), 1.0e-10);
assertEquals(0, a.viewPart(0, 3, 1, 3).viewDiagonal().minus(
new DenseVector(new double[]{2, 6, 9})).norm(1), 1.0e-10);
assertEquals(4, a.get(0, 3), 1.0e-10);
print(a);
Matrix m = new DenseMatrix(4, 4).assign(a);
assertEquals(0, m.minus(a).aggregate(Functions.PLUS, Functions.ABS), 1.0e-10);
print(m);
assertEquals(0, m.transpose().times(m).minus(a.transpose().times(a)).aggregate(
Functions.PLUS, Functions.ABS), 1.0e-10);
assertEquals(0, m.plus(m).minus(a.plus(a)).aggregate(Functions.PLUS, Functions.ABS), 1.0e-10);
}
代码示例来源:origin: apache/mahout
@Test
public void randomMatrix() {
Matrix a = new DenseMatrix(60, 60).assign(Functions.random());
QRDecomposition qr = new QRDecomposition(a);
// how close is Q to actually being orthornormal?
double maxIdent = qr.getQ().transpose().times(qr.getQ()).viewDiagonal().assign(Functions.plus(-1)).norm(1);
assertEquals(0, maxIdent, 1.0e-13);
// how close is Q R to the original value of A?
Matrix z = qr.getQ().times(qr.getR()).minus(a);
double maxError = z.aggregate(Functions.MIN, Functions.ABS);
assertEquals(0, maxError, 1.0e-13);
}
代码示例来源:origin: apache/mahout
@Test
public void random() {
Matrix m = new DenseMatrix(200, 30).assign(Functions.random());
Vector b = new DenseVector(200).assign(1);
LSMR r = new LSMR();
Vector x1 = r.solve(m, b);
// assertEquals(0, m.times(x1).minus(b).norm(2), 1.0e-2);
double norm = new SingularValueDecomposition(m).getS().viewDiagonal().norm(2);
double actual = m.transpose().times(m).times(x1).minus(m.transpose().times(b)).norm(2);
System.out.printf("%.4f\n", actual / norm * 1.0e6);
assertEquals(0, actual, norm * 1.0e-5);
// and we need to check that the error estimates are pretty good.
assertEquals(m.times(x1).minus(b).norm(2), r.getResidualNorm(), 1.0e-5);
assertEquals(actual, r.getNormalEquationResidual(), 1.0e-9);
}
代码示例来源:origin: apache/mahout
v.viewDiagonal().assign(1);
代码示例来源:origin: apache/mahout
@Test
public void testBasics() {
DiagonalMatrix a = new DiagonalMatrix(new double[]{1, 2, 3, 4});
assertEquals(0, a.viewDiagonal().minus(new DenseVector(new double[]{1, 2, 3, 4})).norm(1), 1.0e-10);
assertEquals(0, a.viewPart(0, 3, 0, 3).viewDiagonal().minus(
new DenseVector(new double[]{1, 2, 3})).norm(1), 1.0e-10);
assertEquals(4, a.get(3, 3), 1.0e-10);
Matrix m = new DenseMatrix(4, 4);
m.assign(a);
assertEquals(0, m.minus(a).aggregate(Functions.PLUS, Functions.ABS), 1.0e-10);
assertEquals(0, m.transpose().times(m).minus(a.transpose().times(a)).aggregate(
Functions.PLUS, Functions.ABS), 1.0e-10);
assertEquals(0, m.plus(m).minus(a.plus(a)).aggregate(Functions.PLUS, Functions.ABS), 1.0e-10);
m = new DenseMatrix(new double[][]{{1, 2, 3, 4}, {5, 6, 7, 8}});
assertEquals(100, a.timesLeft(m).aggregate(Functions.PLUS, Functions.ABS), 1.0e-10);
assertEquals(100, a.times(m.transpose()).aggregate(Functions.PLUS, Functions.ABS), 1.0e-10);
}
代码示例来源:origin: cloudera/mahout
public DiagonalMatrix(Matrix values) {
this(values.viewDiagonal());
}
代码示例来源:origin: org.apache.mahout/mahout-math
public DiagonalMatrix(Matrix values) {
this(values.viewDiagonal());
}
代码示例来源:origin: org.apache.mahout/mahout-math
/**
* Return the block diagonal eigenvalue matrix
*
* @return D
*/
public Matrix getD() {
Matrix x = new DenseMatrix(n, n);
x.assign(0);
x.viewDiagonal().assign(d);
for (int i = 0; i < n; i++) {
double v = e.getQuick(i);
if (v > 0) {
x.setQuick(i, i + 1, v);
} else if (v < 0) {
x.setQuick(i, i - 1, v);
}
}
return x;
}
代码示例来源:origin: org.apache.mahout/mahout-math
v.viewDiagonal().assign(1);
代码示例来源:origin: org.apache.mahout/mahout-mrlegacy
@Test
public void testInitialization() {
// Start with super clusterable data.
List<? extends WeightedVector> data = cubishTestData(0.01);
// Just do initialization of ball k-means. This should drop a point into each of the clusters.
BallKMeans r = new BallKMeans(new BruteSearch(new SquaredEuclideanDistanceMeasure()), 6, 20);
r.cluster(data);
// Put the centroids into a matrix.
Matrix x = new DenseMatrix(6, 5);
int row = 0;
for (Centroid c : r) {
x.viewRow(row).assign(c.viewPart(0, 5));
row++;
}
// Verify that each column looks right. Should contain zeros except for a single 6.
final Vector columnNorms = x.aggregateColumns(new VectorFunction() {
@Override
public double apply(Vector f) {
// Return the sum of three discrepancy measures.
return Math.abs(f.minValue()) + Math.abs(f.maxValue() - 6) + Math.abs(f.norm(1) - 6);
}
});
// Verify all errors are nearly zero.
assertEquals(0, columnNorms.norm(1) / columnNorms.size(), 0.1);
// Verify that the centroids are a permutation of the original ones.
SingularValueDecomposition svd = new SingularValueDecomposition(x);
Vector s = svd.getS().viewDiagonal().assign(Functions.div(6));
assertEquals(5, s.getLengthSquared(), 0.05);
assertEquals(5, s.norm(1), 0.05);
}
内容来源于网络,如有侵权,请联系作者删除!