You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mahout.apache.org by sr...@apache.org on 2009/06/19 06:50:41 UTC
svn commit: r786370 [1/2] - in /lucene/mahout/trunk:
core/src/main/java/org/apache/mahout/clustering/canopy/
core/src/main/java/org/apache/mahout/clustering/dirichlet/
core/src/main/java/org/apache/mahout/clustering/dirichlet/models/
core/src/main/java...
Author: srowen
Date: Fri Jun 19 04:50:40 2009
New Revision: 786370
URL: http://svn.apache.org/viewvc?rev=786370&view=rev
Log:
MAHOUT-121
Added:
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/OrderedIntDoubleMapping.java
lucene/mahout/trunk/core/src/test/java/org/apache/mahout/matrix/TestOrderedIntDoubleMapping.java
Modified:
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/canopy/Canopy.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/UncommonDistributions.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/AsymmetricSampledNormalModel.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/NormalModel.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/SampledNormalModel.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/fuzzykmeans/SoftCluster.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/kmeans/Cluster.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/meanshift/MeanShiftCanopy.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/AbstractMatrix.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/AbstractVector.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/DenseMatrix.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/DenseVector.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/Matrix.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/MatrixView.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/SparseColumnMatrix.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/SparseMatrix.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/SparseRowMatrix.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/SparseVector.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/Vector.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/VectorView.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/utils/CosineDistanceMeasure.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/utils/EuclideanDistanceMeasure.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/utils/ManhattanDistanceMeasure.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/utils/TanimotoDistanceMeasure.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/utils/WeightedEuclideanDistanceMeasure.java
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/utils/WeightedManhattanDistanceMeasure.java
lucene/mahout/trunk/core/src/test/java/org/apache/mahout/clustering/canopy/TestCanopyCreation.java
lucene/mahout/trunk/core/src/test/java/org/apache/mahout/clustering/dirichlet/TestMapReduce.java
lucene/mahout/trunk/core/src/test/java/org/apache/mahout/matrix/MatrixTest.java
lucene/mahout/trunk/core/src/test/java/org/apache/mahout/matrix/TestDenseVector.java
lucene/mahout/trunk/core/src/test/java/org/apache/mahout/matrix/TestMatrixView.java
lucene/mahout/trunk/core/src/test/java/org/apache/mahout/matrix/TestSparseVector.java
lucene/mahout/trunk/core/src/test/java/org/apache/mahout/matrix/TestVectorView.java
lucene/mahout/trunk/core/src/test/java/org/apache/mahout/matrix/TestVectorWritable.java
lucene/mahout/trunk/core/src/test/java/org/apache/mahout/matrix/VectorTest.java
lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/clustering/dirichlet/DisplayDirichlet.java
lucene/mahout/trunk/examples/src/main/java/org/apache/mahout/clustering/syntheticcontrol/dirichlet/NormalScModel.java
lucene/mahout/trunk/utils/src/test/java/org/apache/mahout/utils/vectors/lucene/LuceneIterableTest.java
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/canopy/Canopy.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/canopy/Canopy.java?rev=786370&r1=786369&r2=786370&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/canopy/Canopy.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/canopy/Canopy.java Fri Jun 19 04:50:40 2009
@@ -78,7 +78,7 @@
public Canopy(Vector point) {
this.canopyId = nextCanopyId++;
this.center = point;
- this.pointTotal = point.copy();
+ this.pointTotal = point.clone();
this.numPoints = 1;
}
@@ -93,7 +93,7 @@
public Canopy(Vector point, int canopyId) {
this.canopyId = canopyId;
this.center = point;
- this.pointTotal = point.copy();
+ this.pointTotal = point.clone();
this.numPoints = 1;
}
@@ -263,7 +263,7 @@
*/
public void addPoint(Vector point) {
numPoints++;
- for (int i = 0; i < point.cardinality(); i++)
+ for (int i = 0; i < point.size(); i++)
pointTotal.set(i, point.get(i) + pointTotal.get(i));
}
@@ -317,8 +317,8 @@
* @return a point which is the new centroid
*/
public Vector computeCentroid() {
- Vector result = new SparseVector(pointTotal.cardinality());
- for (int i = 0; i < pointTotal.cardinality(); i++)
+ Vector result = new SparseVector(pointTotal.size());
+ for (int i = 0; i < pointTotal.size(); i++)
result.set(i, pointTotal.get(i) / numPoints);
return result;
}
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/UncommonDistributions.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/UncommonDistributions.java?rev=786370&r1=786369&r2=786370&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/UncommonDistributions.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/UncommonDistributions.java Fri Jun 19 04:50:40 2009
@@ -175,7 +175,7 @@
double total = probabilities.zSum();
double nextDouble = random.nextDouble();
double p = nextDouble * total;
- for (int i = 0; i < probabilities.cardinality(); i++) {
+ for (int i = 0; i < probabilities.size(); i++) {
double p_i = probabilities.get(i);
if (p < p_i) {
return i;
@@ -207,7 +207,7 @@
public static Vector rMultinom(int size, Vector probabilities) {
// our probability argument may not be normalized.
double total = probabilities.zSum();
- int cardinality = probabilities.cardinality();
+ int cardinality = probabilities.size();
Vector result = new DenseVector(cardinality);
for (int i = 0; total > 0 && i < cardinality; i++) {
double p = probabilities.get(i);
@@ -253,7 +253,7 @@
Vector r = alpha.like();
double total = alpha.zSum();
double remainder = 1;
- for (int i = 0; i < r.cardinality(); i++) {
+ for (int i = 0; i < r.size(); i++) {
double a = alpha.get(i);
total -= a;
double beta = rBeta(a, Math.max(0, total));
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/AsymmetricSampledNormalModel.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/AsymmetricSampledNormalModel.java?rev=786370&r1=786369&r2=786370&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/AsymmetricSampledNormalModel.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/AsymmetricSampledNormalModel.java Fri Jun 19 04:50:40 2009
@@ -91,7 +91,7 @@
* @return
*/
private double pdf(Vector x, double sd) {
- assert x.size() == 2;
+ assert x.getNumNondefaultElements() == 2;
double sd2 = sd * sd;
double exp = -(x.dot(x) - 2 * x.dot(mean) + mean.dot(mean)) / (2 * sd2);
double ex = Math.exp(exp);
@@ -101,7 +101,7 @@
@Override
public double pdf(Vector x) {
// return the product of the two component pdfs
- assert x.size() == 2;
+ assert x.getNumNondefaultElements() == 2;
double pdf0 = pdf(x, sd.get(0));
double pdf1 = pdf(x, sd.get(1));
//if (pdf0 < 0 || pdf0 > 1 || pdf1 < 0 || pdf1 > 1)
@@ -119,11 +119,11 @@
StringBuilder buf = new StringBuilder();
buf.append("asnm{n=").append(s0).append(" m=[");
if (mean != null)
- for (int i = 0; i < mean.cardinality(); i++)
+ for (int i = 0; i < mean.size(); i++)
buf.append(String.format("%.2f", mean.get(i))).append(", ");
buf.append("] sd=[");
if (sd != null)
- for (int i = 0; i < sd.cardinality(); i++)
+ for (int i = 0; i < sd.size(); i++)
buf.append(String.format("%.2f", sd.get(i))).append(", ");
buf.append("]}");
return buf.toString();
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/NormalModel.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/NormalModel.java?rev=786370&r1=786369&r2=786370&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/NormalModel.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/NormalModel.java Fri Jun 19 04:50:40 2009
@@ -76,14 +76,14 @@
if (s0 > 1) {
Vector std = s2.times(s0).minus(s1.times(s1)).assign(
new SquareRootFunction()).divide(s0);
- sd = std.zSum() / s1.cardinality();
+ sd = std.zSum() / s1.size();
} else
sd = Double.MIN_VALUE;
}
@Override
public double pdf(Vector x) {
- assert x.size() == 2;
+ assert x.getNumNondefaultElements() == 2;
double sd2 = sd * sd;
double exp = -(x.dot(x) - 2 * x.dot(mean) + mean.dot(mean)) / (2 * sd2);
double ex = Math.exp(exp);
@@ -100,7 +100,7 @@
StringBuilder buf = new StringBuilder();
buf.append("nm{n=").append(s0).append(" m=[");
if (mean != null)
- for (int i = 0; i < mean.cardinality(); i++)
+ for (int i = 0; i < mean.size(); i++)
buf.append(String.format("%.2f", mean.get(i))).append(", ");
buf.append("] sd=").append(String.format("%.2f", sd)).append('}');
return buf.toString();
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/SampledNormalModel.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/SampledNormalModel.java?rev=786370&r1=786369&r2=786370&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/SampledNormalModel.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/dirichlet/models/SampledNormalModel.java Fri Jun 19 04:50:40 2009
@@ -33,7 +33,7 @@
StringBuilder buf = new StringBuilder();
buf.append("snm{n=").append(s0).append(" m=[");
if (mean != null)
- for (int i = 0; i < mean.cardinality(); i++)
+ for (int i = 0; i < mean.size(); i++)
buf.append(String.format("%.2f", mean.get(i))).append(", ");
buf.append("] sd=").append(String.format("%.2f", sd)).append('}');
return buf.toString();
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/fuzzykmeans/SoftCluster.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/fuzzykmeans/SoftCluster.java?rev=786370&r1=786369&r2=786370&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/fuzzykmeans/SoftCluster.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/fuzzykmeans/SoftCluster.java Fri Jun 19 04:50:40 2009
@@ -311,7 +311,7 @@
s0 += ptProb;
Vector wtPt = point.times(ptProb);
if (s1 == null)
- s1 = point.copy();
+ s1 = point.clone();
else
s1 = s1.plus(wtPt);
if (s2 == null)
@@ -329,7 +329,7 @@
Vector radical = s2.times(s0).minus(s1.times(s1));
radical = radical.times(radical).assign(new SquareRootFunction());
Vector stds = radical.assign(new SquareRootFunction()).divide(s0);
- return stds.zSum() / stds.cardinality();
+ return stds.zSum() / stds.size();
} else
return 0;
}
@@ -345,7 +345,7 @@
centroid = null;
pointProbSum += ptProb;
if (weightedPointTotal == null)
- weightedPointTotal = point.copy().times(ptProb);
+ weightedPointTotal = point.clone().times(ptProb);
else
weightedPointTotal = weightedPointTotal.plus(point.times(ptProb));
}
@@ -359,7 +359,7 @@
centroid = null;
pointProbSum += partialSumPtProb;
if (weightedPointTotal == null)
- weightedPointTotal = delta.copy();
+ weightedPointTotal = delta.clone();
else
weightedPointTotal = weightedPointTotal.plus(delta);
}
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/kmeans/Cluster.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/kmeans/Cluster.java?rev=786370&r1=786369&r2=786370&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/kmeans/Cluster.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/kmeans/Cluster.java Fri Jun 19 04:50:40 2009
@@ -270,7 +270,7 @@
centroid = null;
numPoints += count;
if (pointTotal == null) {
- pointTotal = delta.copy();
+ pointTotal = delta.clone();
pointSquaredTotal = delta.times(delta);
} else {
pointTotal = pointTotal.plus(delta);
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/meanshift/MeanShiftCanopy.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/meanshift/MeanShiftCanopy.java?rev=786370&r1=786369&r2=786370&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/meanshift/MeanShiftCanopy.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/clustering/meanshift/MeanShiftCanopy.java Fri Jun 19 04:50:40 2009
@@ -242,7 +242,7 @@
public MeanShiftCanopy(Vector point) {
this.canopyId = nextCanopyId++;
this.center = point;
- this.pointTotal = point.copy();
+ this.pointTotal = point.clone();
this.numPoints = 1;
this.boundPoints.add(point);
}
@@ -259,7 +259,7 @@
boolean converged) {
this.canopyId = canopyId;
this.center = point;
- this.pointTotal = point.copy();
+ this.pointTotal = point.clone();
this.numPoints = 1;
this.boundPoints = boundPoints;
this.converged = converged;
@@ -274,7 +274,7 @@
*/
void addPoints(Vector point, int nPoints) {
numPoints += nPoints;
- Vector subTotal = (nPoints == 1) ? point.copy() : point.times(nPoints);
+ Vector subTotal = (nPoints == 1) ? point.clone() : point.times(nPoints);
pointTotal = (pointTotal == null) ? subTotal : pointTotal.plus(subTotal);
}
@@ -294,7 +294,7 @@
* @return a Vector which is the new bound centroid
*/
public Vector computeBoundCentroid() {
- Vector result = new DenseVector(center.cardinality());
+ Vector result = new DenseVector(center.size());
for (Vector v : boundPoints)
result.assign(v, new PlusFunction());
return result.divide(boundPoints.size());
@@ -416,7 +416,7 @@
converged = new EuclideanDistanceMeasure().distance(centroid, center) < convergenceDelta;
center = centroid;
numPoints = 1;
- pointTotal = centroid.copy();
+ pointTotal = centroid.clone();
return converged;
}
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/AbstractMatrix.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/AbstractMatrix.java?rev=786370&r1=786369&r2=786370&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/AbstractMatrix.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/AbstractMatrix.java Fri Jun 19 04:50:40 2009
@@ -143,7 +143,7 @@
@Override
public Matrix assign(double value) {
- int[] c = cardinality();
+ int[] c = size();
for (int row = 0; row < c[ROW]; row++)
for (int col = 0; col < c[COL]; col++)
setQuick(row, col, value);
@@ -152,7 +152,7 @@
@Override
public Matrix assign(double[][] values) {
- int[] c = cardinality();
+ int[] c = size();
if (c[ROW] != values.length)
throw new CardinalityException();
for (int row = 0; row < c[ROW]; row++)
@@ -166,8 +166,8 @@
@Override
public Matrix assign(Matrix other, BinaryFunction function) {
- int[] c = cardinality();
- int[] o = other.cardinality();
+ int[] c = size();
+ int[] o = other.size();
if (c[ROW] != o[ROW] || c[COL] != o[COL])
throw new CardinalityException();
for (int row = 0; row < c[ROW]; row++)
@@ -179,8 +179,8 @@
@Override
public Matrix assign(Matrix other) {
- int[] c = cardinality();
- int[] o = other.cardinality();
+ int[] c = size();
+ int[] o = other.size();
if (c[ROW] != o[ROW] || c[COL] != o[COL])
throw new CardinalityException();
for (int row = 0; row < c[ROW]; row++)
@@ -191,7 +191,7 @@
@Override
public Matrix assign(UnaryFunction function) {
- int[] c = cardinality();
+ int[] c = size();
for (int row = 0; row < c[ROW]; row++)
for (int col = 0; col < c[COL]; col++)
setQuick(row, col, function.apply(getQuick(row, col)));
@@ -200,7 +200,7 @@
@Override
public double determinant() {
- int[] card = cardinality();
+ int[] card = size();
int rowSize = card[ROW];
int columnSize = card[COL];
if (rowSize != columnSize)
@@ -234,10 +234,12 @@
}
+ public abstract Matrix clone();
+
@Override
public Matrix divide(double x) {
- Matrix result = copy();
- int[] c = cardinality();
+ Matrix result = clone();
+ int[] c = size();
for (int row = 0; row < c[ROW]; row++)
for (int col = 0; col < c[COL]; col++)
result.setQuick(row, col, result.getQuick(row, col) / x);
@@ -246,7 +248,7 @@
@Override
public double get(int row, int column) {
- int[] c = cardinality();
+ int[] c = size();
if (row < 0 || column < 0 || row >= c[ROW] || column >= c[COL])
throw new IndexException();
return getQuick(row, column);
@@ -254,11 +256,11 @@
@Override
public Matrix minus(Matrix other) {
- int[] c = cardinality();
- int[] o = other.cardinality();
+ int[] c = size();
+ int[] o = other.size();
if (c[ROW] != o[ROW] || c[COL] != o[COL])
throw new CardinalityException();
- Matrix result = copy();
+ Matrix result = clone();
for (int row = 0; row < c[ROW]; row++)
for (int col = 0; col < c[COL]; col++)
result.setQuick(row, col, result.getQuick(row, col)
@@ -268,8 +270,8 @@
@Override
public Matrix plus(double x) {
- Matrix result = copy();
- int[] c = cardinality();
+ Matrix result = clone();
+ int[] c = size();
for (int row = 0; row < c[ROW]; row++)
for (int col = 0; col < c[COL]; col++)
result.setQuick(row, col, result.getQuick(row, col) + x);
@@ -278,11 +280,11 @@
@Override
public Matrix plus(Matrix other) {
- int[] c = cardinality();
- int[] o = other.cardinality();
+ int[] c = size();
+ int[] o = other.size();
if (c[ROW] != o[ROW] || c[COL] != o[COL])
throw new CardinalityException();
- Matrix result = copy();
+ Matrix result = clone();
for (int row = 0; row < c[ROW]; row++)
for (int col = 0; col < c[COL]; col++)
result.setQuick(row, col, result.getQuick(row, col)
@@ -292,7 +294,7 @@
@Override
public void set(int row, int column, double value) {
- int[] c = cardinality();
+ int[] c = size();
if (row < 0 || column < 0 || row >= c[ROW] || column >= c[COL])
throw new IndexException();
setQuick(row, column, value);
@@ -300,7 +302,7 @@
@Override
public void set(int row, double[] data) {
- int[] c = cardinality();
+ int[] c = size();
if (c[COL] < data.length)
throw new CardinalityException();
if ((c[ROW] < row) || (row < 0))
@@ -312,8 +314,8 @@
@Override
public Matrix times(double x) {
- Matrix result = copy();
- int[] c = cardinality();
+ Matrix result = clone();
+ int[] c = size();
for (int row = 0; row < c[ROW]; row++)
for (int col = 0; col < c[COL]; col++)
result.setQuick(row, col, result.getQuick(row, col) * x);
@@ -322,8 +324,8 @@
@Override
public Matrix times(Matrix other) {
- int[] c = cardinality();
- int[] o = other.cardinality();
+ int[] c = size();
+ int[] o = other.size();
if (c[COL] != o[ROW])
throw new CardinalityException();
Matrix result = like(c[ROW], o[COL]);
@@ -339,7 +341,7 @@
@Override
public Matrix transpose() {
- int[] card = cardinality();
+ int[] card = size();
Matrix result = like(card[COL], card[ROW]);
for (int row = 0; row < card[ROW]; row++)
for (int col = 0; col < card[COL]; col++)
@@ -350,7 +352,7 @@
@Override
public double zSum() {
double result = 0;
- int[] c = cardinality();
+ int[] c = size();
for (int row = 0; row < c[ROW]; row++)
for (int col = 0; col < c[COL]; col++)
result += getQuick(row, col);
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/AbstractVector.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/AbstractVector.java?rev=786370&r1=786369&r2=786370&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/AbstractVector.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/AbstractVector.java Fri Jun 19 04:50:40 2009
@@ -95,27 +95,29 @@
}
}
+ public abstract Vector clone();
+
@Override
public Vector divide(double x) {
- Vector result = copy();
- for (int i = 0; i < result.cardinality(); i++)
+ Vector result = clone();
+ for (int i = 0; i < result.size(); i++)
result.setQuick(i, getQuick(i) / x);
return result;
}
@Override
public double dot(Vector x) {
- if (cardinality() != x.cardinality())
+ if (size() != x.size())
throw new CardinalityException();
double result = 0;
- for (int i = 0; i < cardinality(); i++)
+ for (int i = 0; i < size(); i++)
result += getQuick(i) * x.getQuick(i);
return result;
}
@Override
public double get(int index) {
- if (index >= 0 && index < cardinality())
+ if (index >= 0 && index < size())
return getQuick(index);
else
throw new IndexException();
@@ -123,10 +125,10 @@
@Override
public Vector minus(Vector x) {
- if (cardinality() != x.cardinality())
+ if (size() != x.size())
throw new CardinalityException();
- Vector result = copy();
- for (int i = 0; i < result.cardinality(); i++)
+ Vector result = clone();
+ for (int i = 0; i < result.size(); i++)
result.setQuick(i, getQuick(i) - x.getQuick(i));
return result;
}
@@ -152,13 +154,13 @@
} else if (power == 0.0) {
// this is the number of non-zero elements
double val = 0.0;
- for (int i = 0; i < cardinality(); i++) {
+ for (int i = 0; i < size(); i++) {
val += getQuick(i) == 0 ? 0 : 1;
}
return divide(val);
} else {
double val = 0.0;
- for (int i = 0; i < cardinality(); i++) {
+ for (int i = 0; i < size(); i++) {
val += Math.pow(getQuick(i), power);
}
double divFactor = Math.pow(val, 1.0 / power);
@@ -169,7 +171,7 @@
@Override
public double maxValue() {
double result = Double.MIN_VALUE;
- for (int i = 0; i < cardinality(); i++) {
+ for (int i = 0; i < size(); i++) {
result = Math.max(result, getQuick(i));
}
return result;
@@ -179,7 +181,7 @@
public int maxValueIndex() {
int result = -1;
double max = Double.MIN_VALUE;
- for (int i = 0; i < cardinality(); i++) {
+ for (int i = 0; i < size(); i++) {
double tmp = getQuick(i);
if (tmp > max) {
max = tmp;
@@ -191,25 +193,25 @@
@Override
public Vector plus(double x) {
- Vector result = copy();
- for (int i = 0; i < result.cardinality(); i++)
+ Vector result = clone();
+ for (int i = 0; i < result.size(); i++)
result.setQuick(i, getQuick(i) + x);
return result;
}
@Override
public Vector plus(Vector x) {
- if (cardinality() != x.cardinality())
+ if (size() != x.size())
throw new CardinalityException();
- Vector result = copy();
- for (int i = 0; i < result.cardinality(); i++)
+ Vector result = clone();
+ for (int i = 0; i < result.size(); i++)
result.setQuick(i, getQuick(i) + x.getQuick(i));
return result;
}
@Override
public void set(int index, double value) {
- if (index >= 0 && index < cardinality())
+ if (index >= 0 && index < size())
setQuick(index, value);
else
throw new IndexException();
@@ -217,18 +219,18 @@
@Override
public Vector times(double x) {
- Vector result = copy();
- for (int i = 0; i < result.cardinality(); i++)
+ Vector result = clone();
+ for (int i = 0; i < result.size(); i++)
result.setQuick(i, getQuick(i) * x);
return result;
}
@Override
public Vector times(Vector x) {
- if (cardinality() != x.cardinality())
+ if (size() != x.size())
throw new CardinalityException();
- Vector result = copy();
- for (int i = 0; i < result.cardinality(); i++)
+ Vector result = clone();
+ for (int i = 0; i < result.size(); i++)
result.setQuick(i, getQuick(i) * x.getQuick(i));
return result;
}
@@ -236,39 +238,39 @@
@Override
public double zSum() {
double result = 0;
- for (int i = 0; i < cardinality(); i++)
+ for (int i = 0; i < size(); i++)
result += getQuick(i);
return result;
}
@Override
public Vector assign(double value) {
- for (int i = 0; i < cardinality(); i++)
+ for (int i = 0; i < size(); i++)
setQuick(i, value);
return this;
}
@Override
public Vector assign(double[] values) {
- if (values.length != cardinality())
+ if (values.length != size())
throw new CardinalityException();
- for (int i = 0; i < cardinality(); i++)
+ for (int i = 0; i < size(); i++)
setQuick(i, values[i]);
return this;
}
@Override
public Vector assign(Vector other) {
- if (other.cardinality() != cardinality())
+ if (other.size() != size())
throw new CardinalityException();
- for (int i = 0; i < cardinality(); i++)
+ for (int i = 0; i < size(); i++)
setQuick(i, other.getQuick(i));
return this;
}
@Override
public Vector assign(BinaryFunction f, double y) {
- for (int i = 0; i < cardinality(); i++) {
+ for (int i = 0; i < size(); i++) {
setQuick(i, f.apply(getQuick(i), y));
}
return this;
@@ -276,24 +278,24 @@
@Override
public Vector assign(UnaryFunction function) {
- for (int i = 0; i < cardinality(); i++)
+ for (int i = 0; i < size(); i++)
setQuick(i, function.apply(getQuick(i)));
return this;
}
@Override
public Vector assign(Vector other, BinaryFunction function) {
- if (other.cardinality() != cardinality())
+ if (other.size() != size())
throw new CardinalityException();
- for (int i = 0; i < cardinality(); i++)
+ for (int i = 0; i < size(); i++)
setQuick(i, function.apply(getQuick(i), other.getQuick(i)));
return this;
}
@Override
public Matrix cross(Vector other) {
- Matrix result = matrixLike(cardinality(), other.cardinality());
- for (int row = 0; row < cardinality(); row++)
+ Matrix result = matrixLike(size(), other.size());
+ for (int row = 0; row < size(); row++)
result.assignRow(row, other.times(getQuick(row)));
return result;
}
@@ -365,8 +367,8 @@
public static boolean equivalent(Vector left, Vector right) {
if (left == right) return true;
boolean result = true;
- int leftCardinality = left.cardinality();
- if (leftCardinality == right.cardinality()) {
+ int leftCardinality = left.size();
+ if (leftCardinality == right.size()) {
for (int i = 0; i < leftCardinality; i++) {
if (left.getQuick(i) != right.getQuick(i)) {
return false;
@@ -402,8 +404,8 @@
}
boolean result = true;
- int leftCardinality = left.cardinality();
- if (leftCardinality == right.cardinality()) {
+ int leftCardinality = left.size();
+ if (leftCardinality == right.size()) {
for (int i = 0; i < leftCardinality; i++) {
if (left.getQuick(i) != right.getQuick(i)) {
return false;
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/DenseMatrix.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/DenseMatrix.java?rev=786370&r1=786369&r2=786370&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/DenseMatrix.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/DenseMatrix.java Fri Jun 19 04:50:40 2009
@@ -69,7 +69,7 @@
}
@Override
- public int[] cardinality() {
+ public int[] size() {
int[] result = new int[2];
result[ROW] = rowSize();
result[COL] = columnSize();
@@ -77,7 +77,7 @@
}
@Override
- public Matrix copy() {
+ public Matrix clone() {
return new DenseMatrix(values);
}
@@ -110,8 +110,8 @@
}
@Override
- public int[] size() {
- return cardinality();
+ public int[] getNumNondefaultElements() {
+ return size();
}
@Override
@@ -132,7 +132,7 @@
@Override
public Matrix assignColumn(int column, Vector other) {
- if (other.cardinality() != rowSize() || column >= columnSize())
+ if (other.size() != rowSize() || column >= columnSize())
throw new CardinalityException();
for (int row = 0; row < rowSize(); row++)
values[row][column] = other.getQuick(row);
@@ -141,9 +141,10 @@
@Override
public Matrix assignRow(int row, Vector other) {
- if (row >= rowSize() || other.cardinality() != columnSize())
+ if (row >= rowSize() || other.size() != columnSize())
throw new CardinalityException();
- values[row] = other.toArray();
+ for (int col = 0; col < columnSize(); col++)
+ values[row][col] = other.getQuick(col);
return this;
}
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/DenseVector.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/DenseVector.java?rev=786370&r1=786369&r2=786370&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/DenseVector.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/DenseVector.java Fri Jun 19 04:50:40 2009
@@ -80,12 +80,12 @@
}
@Override
- public int cardinality() {
+ public int size() {
return values.length;
}
@Override
- public DenseVector copy() {
+ public DenseVector clone() {
DenseVector denseVector = new DenseVector(values);
denseVector.setLabelBindings(getLabelBindings());
return denseVector;
@@ -98,7 +98,7 @@
@Override
public DenseVector like() {
- DenseVector denseVector = new DenseVector(cardinality());
+ DenseVector denseVector = new DenseVector(size());
denseVector.setLabelBindings(getLabelBindings());
return denseVector;
}
@@ -116,16 +116,11 @@
}
@Override
- public int size() {
+ public int getNumNondefaultElements() {
return values.length;
}
@Override
- public double[] toArray() {
- return values.clone();
- }
-
- @Override
public Vector viewPart(int offset, int length) {
if (length > values.length)
throw new CardinalityException();
@@ -182,7 +177,7 @@
@Override
public void write(DataOutput dataOutput) throws IOException {
- dataOutput.writeInt(cardinality());
+ dataOutput.writeInt(size());
for (Vector.Element element : this) {
dataOutput.writeDouble(element.get());
}
@@ -206,13 +201,14 @@
* @see AbstractVector#strictEquivalence(Vector, Vector)
* @see AbstractVector#equivalent(Vector, Vector)
*/
+ @Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Vector)) return false;
Vector that = (Vector) o;
String thatName = that.getName();
- if (this.cardinality() != that.cardinality()) return false;
+ if (this.size() != that.size()) return false;
if (name != null && thatName != null && !name.equals(thatName)){
return false;
} else if ((name != null && thatName == null) || (thatName != null && name == null)){
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/Matrix.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/Matrix.java?rev=786370&r1=786369&r2=786370&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/Matrix.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/Matrix.java Fri Jun 19 04:50:40 2009
@@ -24,7 +24,7 @@
/**
* The basic interface including numerous convenience functions
*/
-public interface Matrix {
+public interface Matrix extends Cloneable {
/**
* Return a formatted WritableComparable<?> suitable for output
@@ -109,14 +109,14 @@
*
* @return an int[2]
*/
- int[] cardinality();
+ int[] size();
/**
* Return a copy of the recipient
*
* @return a new Matrix
*/
- Matrix copy();
+ Matrix clone();
/**
* Returns matrix determinator using Laplace theorem
@@ -250,7 +250,7 @@
*
* @return an int[2] containing [row, column] count
*/
- int[] size();
+ int[] getNumNondefaultElements();
/**
* Return a new matrix containing the product of each value of the recipient
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/MatrixView.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/MatrixView.java?rev=786370&r1=786369&r2=786370&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/MatrixView.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/MatrixView.java Fri Jun 19 04:50:40 2009
@@ -60,13 +60,13 @@
}
@Override
- public int[] cardinality() {
+ public int[] size() {
return cardinality;
}
@Override
- public Matrix copy() {
- return new MatrixView(matrix.copy(), offset, cardinality);
+ public Matrix clone() {
+ return new MatrixView(matrix.clone(), offset, cardinality);
}
@Override
@@ -91,7 +91,7 @@
}
@Override
- public int[] size() {
+ public int[] getNumNondefaultElements() {
return cardinality;
}
@@ -128,7 +128,7 @@
@Override
public Matrix assignColumn(int column, Vector other) {
- if (cardinality[ROW] != other.cardinality())
+ if (cardinality[ROW] != other.size())
throw new CardinalityException();
for (int row = 0; row < cardinality[ROW]; row++)
matrix.setQuick(row + offset[ROW], column + offset[COL], other
@@ -138,7 +138,7 @@
@Override
public Matrix assignRow(int row, Vector other) {
- if (cardinality[COL] != other.cardinality())
+ if (cardinality[COL] != other.size())
throw new CardinalityException();
for (int col = 0; col < cardinality[COL]; col++)
matrix
Added: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/OrderedIntDoubleMapping.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/OrderedIntDoubleMapping.java?rev=786370&view=auto
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/OrderedIntDoubleMapping.java (added)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/OrderedIntDoubleMapping.java Fri Jun 19 04:50:40 2009
@@ -0,0 +1,176 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.mahout.matrix;
+
+import java.io.Serializable;
+
+final class OrderedIntDoubleMapping implements Serializable, Cloneable {
+
+ private static final double DEFAULT_VALUE = 0.0;
+
+ private int[] indices;
+ private double[] values;
+ private int numMappings;
+
+ OrderedIntDoubleMapping() {
+ // no-arg constructor for deserializer
+ this(11);
+ }
+
+ OrderedIntDoubleMapping(int capacity) {
+ indices = new int[capacity];
+ values = new double[capacity];
+ numMappings = 0;
+ }
+
+ int[] getIndices() {
+ return indices;
+ }
+
+ double[] getValues() {
+ return values;
+ }
+
+ int getNumMappings() {
+ return numMappings;
+ }
+
+ private void growTo(int newCapacity) {
+ if (newCapacity > indices.length) {
+ int[] newIndices = new int[newCapacity];
+ System.arraycopy(indices, 0, newIndices, 0, numMappings);
+ indices = newIndices;
+ double[] newValues = new double[newCapacity];
+ System.arraycopy(values, 0, newValues, 0, numMappings);
+ values = newValues;
+ }
+ }
+
+ private int find(int index) {
+ int low = 0;
+ int high = numMappings - 1;
+ while (low <= high) {
+ int mid = low + ((high - low) >>> 1);
+ int midVal = indices[mid];
+ if (midVal < index) {
+ low = mid + 1;
+ } else if (midVal > index) {
+ high = mid - 1;
+ } else {
+ return mid;
+ }
+ }
+ return -(low + 1);
+ }
+
+ public double get(int index) {
+ int offset = find(index);
+ return offset >= 0 ? values[offset] : DEFAULT_VALUE;
+ }
+
+ public void set(int index, double value) {
+ int offset = find(index);
+ if (offset >= 0) {
+ if (value == DEFAULT_VALUE) {
+ for (int i = offset + 1, j = offset; i < numMappings; i++, j++) {
+ indices[j] = indices[i];
+ values[j] = values[i];
+ }
+ numMappings--;
+ } else {
+ values[offset] = value;
+ }
+ } else {
+ if (value != DEFAULT_VALUE) {
+ if (numMappings >= indices.length) {
+ growTo(Math.max((int) (1.2 * numMappings), numMappings + 1));
+ }
+ int at = -offset - 1;
+ if (numMappings > at) {
+ for (int i = numMappings - 1, j = numMappings; i >= at; i--, j--) {
+ indices[j] = indices[i];
+ values[j] = values[i];
+ }
+ }
+ indices[at] = index;
+ values[at] = value;
+ numMappings++;
+ }
+ }
+ }
+
+ @Override
+ public int hashCode() {
+ int result = 0;
+ for (int i = 0; i < numMappings; i++) {
+ result = 31 * result + indices[i];
+ result = 31 * result + (int) Double.doubleToRawLongBits(values[i]);
+ }
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (o instanceof OrderedIntDoubleMapping) {
+ OrderedIntDoubleMapping other = (OrderedIntDoubleMapping) o;
+ if (numMappings == other.numMappings) {
+ for (int i = 0; i < numMappings; i++) {
+ if (indices[i] != other.indices[i] || values[i] != other.values[i]) {
+ return false;
+ }
+ }
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder result = new StringBuilder(10* numMappings);
+ for (int i = 0; i < numMappings; i++) {
+ result.append('(');
+ result.append(indices[i]);
+ result.append(',');
+ result.append(values[i]);
+ result.append(')');
+ }
+ return result.toString();
+ }
+
+ @Override
+ public Object clone() {
+ OrderedIntDoubleMapping clone = new OrderedIntDoubleMapping(numMappings);
+ System.arraycopy(indices, 0, clone.indices, 0, numMappings);
+ System.arraycopy(values, 0, clone.values, 0, numMappings);
+ clone.numMappings = numMappings;
+ return clone;
+ }
+
+ public static void main(String[] args) {
+ OrderedIntDoubleMapping test = new OrderedIntDoubleMapping(3);
+ test.set(7, 10.0);
+ test.set(10, 13.0);
+ test.set(3, 4.0);
+ test.set(1, 3.0);
+ test.set(7, 0.0);
+ test.set(1, 0.0);
+ System.out.println(test);
+ }
+
+}
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/SparseColumnMatrix.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/SparseColumnMatrix.java?rev=786370&r1=786369&r2=786370&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/SparseColumnMatrix.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/SparseColumnMatrix.java Fri Jun 19 04:50:40 2009
@@ -44,7 +44,7 @@
this.cardinality = cardinality.clone();
this.columns = columns.clone();
for (int col = 0; col < cardinality[COL]; col++)
- this.columns[col] = columns[col].copy();
+ this.columns[col] = columns[col].clone();
}
/**
@@ -66,15 +66,15 @@
}
@Override
- public int[] cardinality() {
+ public int[] size() {
return cardinality;
}
@Override
- public Matrix copy() {
+ public Matrix clone() {
SparseColumnMatrix copy = new SparseColumnMatrix(cardinality);
for (int col = 0; col < cardinality[COL]; col++)
- copy.columns[col] = columns[col].copy();
+ copy.columns[col] = columns[col].clone();
return copy;
}
@@ -114,11 +114,11 @@
}
@Override
- public int[] size() {
+ public int[] getNumNondefaultElements() {
int[] result = new int[2];
result[COL] = columns.length;
for (int col = 0; col < cardinality[COL]; col++)
- result[ROW] = Math.max(result[ROW], columns[col].size());
+ result[ROW] = Math.max(result[ROW], columns[col].getNumNondefaultElements());
return result;
}
@@ -133,18 +133,18 @@
@Override
public Matrix viewPart(int[] offset, int[] size) {
- if (size[COL] > columns.length || size[ROW] > columns[COL].cardinality())
+ if (size[COL] > columns.length || size[ROW] > columns[COL].size())
throw new CardinalityException();
if (offset[COL] < 0 || offset[COL] + size[COL] > columns.length
|| offset[ROW] < 0
- || offset[ROW] + size[ROW] > columns[COL].cardinality())
+ || offset[ROW] + size[ROW] > columns[COL].size())
throw new IndexException();
return new MatrixView(this, offset, size);
}
@Override
public Matrix assignColumn(int column, Vector other) {
- if (other.cardinality() != cardinality[ROW] || column >= cardinality[COL])
+ if (other.size() != cardinality[ROW] || column >= cardinality[COL])
throw new CardinalityException();
columns[column].assign(other);
return this;
@@ -152,7 +152,7 @@
@Override
public Matrix assignRow(int row, Vector other) {
- if (row >= cardinality[ROW] || other.cardinality() != cardinality[COL])
+ if (row >= cardinality[ROW] || other.size() != cardinality[COL])
throw new CardinalityException();
for (int col = 0; col < cardinality[COL]; col++)
columns[col].setQuick(row, other.getQuick(col));
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/SparseMatrix.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/SparseMatrix.java?rev=786370&r1=786369&r2=786370&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/SparseMatrix.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/SparseMatrix.java Fri Jun 19 04:50:40 2009
@@ -46,7 +46,7 @@
this.cardinality = cardinality.clone();
this.rows = new HashMap<Integer, Vector>();
for (Map.Entry<Integer, SparseVector> entry : rows.entrySet())
- this.rows.put(entry.getKey(), entry.getValue().copy());
+ this.rows.put(entry.getKey(), entry.getValue().clone());
}
/**
@@ -66,15 +66,15 @@
}
@Override
- public int[] cardinality() {
+ public int[] size() {
return cardinality;
}
@Override
- public Matrix copy() {
+ public Matrix clone() {
SparseMatrix copy = new SparseMatrix(cardinality);
for (Map.Entry<Integer, Vector> entry : rows.entrySet())
- copy.rows.put(entry.getKey(), entry.getValue().copy());
+ copy.rows.put(entry.getKey(), entry.getValue().clone());
return copy;
}
@@ -117,11 +117,11 @@
}
@Override
- public int[] size() {
+ public int[] getNumNondefaultElements() {
int[] result = new int[2];
result[ROW] = rows.size();
for (Map.Entry<Integer, Vector> integerVectorEntry : rows.entrySet())
- result[COL] = Math.max(result[COL], integerVectorEntry.getValue().size());
+ result[COL] = Math.max(result[COL], integerVectorEntry.getValue().getNumNondefaultElements());
return result;
}
@@ -146,7 +146,7 @@
@Override
public Matrix assignColumn(int column, Vector other) {
- if (other.cardinality() != cardinality[ROW] || column >= cardinality[COL])
+ if (other.size() != cardinality[ROW] || column >= cardinality[COL])
throw new CardinalityException();
for (int row = 0; row < cardinality[ROW]; row++) {
double val = other.getQuick(row);
@@ -165,7 +165,7 @@
@Override
public Matrix assignRow(int row, Vector other) {
- if (row >= cardinality[ROW] || other.cardinality() != cardinality[COL])
+ if (row >= cardinality[ROW] || other.size() != cardinality[COL])
throw new CardinalityException();
rows.put(row, other);
return this;
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/SparseRowMatrix.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/SparseRowMatrix.java?rev=786370&r1=786369&r2=786370&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/SparseRowMatrix.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/SparseRowMatrix.java Fri Jun 19 04:50:40 2009
@@ -46,7 +46,7 @@
this.cardinality = cardinality.clone();
this.rows = rows.clone();
for (int row = 0; row < cardinality[ROW]; row++)
- this.rows[row] = rows[row].copy();
+ this.rows[row] = rows[row].clone();
}
/**
@@ -69,15 +69,15 @@
}
@Override
- public int[] cardinality() {
+ public int[] size() {
return cardinality;
}
@Override
- public Matrix copy() {
+ public Matrix clone() {
SparseRowMatrix copy = new SparseRowMatrix(cardinality);
for (int row = 0; row < cardinality[ROW]; row++)
- copy.rows[row] = rows[row].copy();
+ copy.rows[row] = rows[row].clone();
return copy;
}
@@ -115,11 +115,11 @@
}
@Override
- public int[] size() {
+ public int[] getNumNondefaultElements() {
int[] result = new int[2];
result[ROW] = rows.length;
for (int row = 0; row < cardinality[ROW]; row++)
- result[COL] = Math.max(result[COL], rows[row].size());
+ result[COL] = Math.max(result[COL], rows[row].getNumNondefaultElements());
return result;
}
@@ -134,17 +134,17 @@
@Override
public Matrix viewPart(int[] offset, int[] size) {
- if (size[ROW] > rows.length || size[COL] > rows[ROW].cardinality())
+ if (size[ROW] > rows.length || size[COL] > rows[ROW].size())
throw new CardinalityException();
if (offset[ROW] < 0 || offset[ROW] + size[ROW] > rows.length
- || offset[COL] < 0 || offset[COL] + size[COL] > rows[ROW].cardinality())
+ || offset[COL] < 0 || offset[COL] + size[COL] > rows[ROW].size())
throw new IndexException();
return new MatrixView(this, offset, size);
}
@Override
public Matrix assignColumn(int column, Vector other) {
- if (other.cardinality() != cardinality[ROW] || column >= cardinality[COL])
+ if (other.size() != cardinality[ROW] || column >= cardinality[COL])
throw new CardinalityException();
for (int row = 0; row < cardinality[ROW]; row++)
rows[row].setQuick(column, other.getQuick(row));
@@ -153,7 +153,7 @@
@Override
public Matrix assignRow(int row, Vector other) {
- if (row >= cardinality[ROW] || other.cardinality() != cardinality[COL])
+ if (row >= cardinality[ROW] || other.size() != cardinality[COL])
throw new CardinalityException();
rows[row].assign(other);
return this;
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/SparseVector.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/SparseVector.java?rev=786370&r1=786369&r2=786370&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/SparseVector.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/SparseVector.java Fri Jun 19 04:50:40 2009
@@ -20,8 +20,7 @@
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.NoSuchElementException;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.io.WritableComparable;
@@ -35,24 +34,24 @@
public SparseVector() {
}
- public SparseVector(String name) {
- super(name);
- }
-
- private Map<Integer, Double> values;
+ private OrderedIntDoubleMapping values;
private int cardinality;
public static boolean optimizeTimes = true;
- public SparseVector(int cardinality) {
- this(null, cardinality);
+ public SparseVector(String name, int cardinality, int size) {
+ super(name);
+ values = new OrderedIntDoubleMapping(size);
+ this.cardinality = cardinality;
}
public SparseVector(String name, int cardinality) {
- super(name);
- values = new HashMap<Integer, Double>();
- this.cardinality = cardinality;
+ this(name, cardinality, cardinality / 8); // arbitrary estimate of 'sparseness'
+ }
+
+ public SparseVector(int cardinality) {
+ this(null, cardinality, cardinality / 8); // arbitrary estimate of 'sparseness'
}
@Override
@@ -68,45 +67,30 @@
}
@Override
- public int cardinality() {
+ public int size() {
return cardinality;
}
@Override
- public SparseVector copy() {
+ public SparseVector clone() {
SparseVector result = like();
- for (Map.Entry<Integer, Double> entry : values.entrySet()) {
- result.setQuick(entry.getKey(), entry.getValue());
- }
+ result.values = (OrderedIntDoubleMapping) values.clone();
return result;
}
@Override
public double getQuick(int index) {
- Double value = values.get(index);
- return value == null ? 0.0 : value;
+ return values.get(index);
}
@Override
public void setQuick(int index, double value) {
- if (value == 0.0)
- values.remove(index);
- else
- values.put(index, value);
+ values.set(index, value);
}
@Override
- public int size() {
- return values.size();
- }
-
- @Override
- public double[] toArray() {
- double[] result = new double[cardinality];
- for (Map.Entry<Integer, Double> entry : values.entrySet()) {
- result[entry.getKey()] = entry.getValue();
- }
- return result;
+ public int getNumNondefaultElements() {
+ return values.getNumMappings();
}
@Override
@@ -128,16 +112,12 @@
@Override
public SparseVector like() {
- SparseVector sparseVector = new SparseVector(cardinality);
- sparseVector.setLabelBindings(getLabelBindings());
- return sparseVector;
+ return new SparseVector(cardinality);
}
@Override
public Vector like(int newCardinality) {
- SparseVector sparseVector = new SparseVector(newCardinality);
- sparseVector.setLabelBindings(getLabelBindings());
- return sparseVector;
+ return new SparseVector(newCardinality);
}
@Override
@@ -155,18 +135,13 @@
* * @see AbstractVector#strictEquivalence(Vector, Vector)
* @see AbstractVector#equivalent(Vector, Vector)
*/
+ @Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Vector)) return false;
Vector that = (Vector) o;
- if (this.cardinality() != that.cardinality()) return false;
- String thatName = that.getName();
- if (name != null && thatName != null && !name.equals(thatName)){
- return false;
- } else if ((name != null && thatName == null) || (thatName != null && name == null)){
- return false;
- }
+ if (this.size() != that.size()) return false;
if (that instanceof SparseVector) {
return (values == null ? ((SparseVector) that).values == null : values.equals(((SparseVector) that).values));
@@ -177,7 +152,6 @@
}
-
@Override
public int hashCode() {
int result = (values != null ? values.hashCode() : 0);
@@ -187,20 +161,19 @@
}
private class Iterator implements java.util.Iterator<Vector.Element> {
- private final java.util.Iterator<Map.Entry<Integer, Double>> it;
-
- Iterator() {
- it = values.entrySet().iterator();
- }
+ private int offset = 0;
@Override
public boolean hasNext() {
- return it.hasNext();
+ return offset < values.getNumMappings();
}
@Override
public Element next() {
- return new Element(it.next().getKey());
+ if (offset < values.getNumMappings()) {
+ return new Element(values.getIndices()[offset++]);
+ }
+ throw new NoSuchElementException();
}
@Override
@@ -212,7 +185,7 @@
@Override
public double zSum() {
double result = 0.0;
- for (Double value : values.values()) {
+ for (double value : values.getValues()) {
result += value;
}
return result;
@@ -220,19 +193,19 @@
@Override
public double dot(Vector x) {
- if (cardinality() != x.cardinality())
+ if (size() != x.size())
throw new CardinalityException();
double result = 0.0;
- for (Map.Entry<Integer, Double> entry : values.entrySet()) {
- result += entry.getValue() * x.getQuick(entry.getKey());
+ for (int index : values.getIndices()) {
+ result += values.get(index) * x.getQuick(index);
}
return result;
}
@Override
public void write(DataOutput dataOutput) throws IOException {
- dataOutput.writeInt(cardinality());
dataOutput.writeInt(size());
+ dataOutput.writeInt(getNumNondefaultElements());
for (Vector.Element element : this) {
if (element.get() != 0.0d) {
dataOutput.writeInt(element.index());
@@ -245,9 +218,9 @@
public void readFields(DataInput dataInput) throws IOException {
int cardinality = dataInput.readInt();
int size = dataInput.readInt();
- Map<Integer, Double> values = new HashMap<Integer, Double>(size);
+ OrderedIntDoubleMapping values = new OrderedIntDoubleMapping(size);
for (int i = 0; i < size; i++) {
- values.put(dataInput.readInt(), dataInput.readDouble());
+ values.set(dataInput.readInt(), dataInput.readDouble());
}
this.cardinality = cardinality;
this.values = values;
@@ -264,8 +237,8 @@
result.setQuick(index, value * x);
}
} else {
- result = copy();
- for (int i = 0; i < result.cardinality(); i++)
+ result = clone();
+ for (int i = 0; i < result.size(); i++)
result.setQuick(i, getQuick(i) * x);
}
return result;
@@ -273,7 +246,7 @@
@Override
public Vector times(Vector x) {
- if (cardinality() != x.cardinality())
+ if (size() != x.size())
throw new CardinalityException();
Vector result;
if (optimizeTimes) {
@@ -284,8 +257,8 @@
result.setQuick(index, value * x.getQuick(index));
}
} else {
- result = copy();
- for (int i = 0; i < result.cardinality(); i++)
+ result = clone();
+ for (int i = 0; i < result.size(); i++)
result.setQuick(i, getQuick(i) * x.getQuick(i));
}
return result;
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/Vector.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/Vector.java?rev=786370&r1=786369&r2=786370&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/Vector.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/Vector.java Fri Jun 19 04:50:40 2009
@@ -112,14 +112,14 @@
*
* @return an int
*/
- int cardinality();
+ int size();
/**
* Return a copy of the recipient
*
* @return a new Vector
*/
- Vector copy();
+ Vector clone();
/**
* Return the value at the index defined by the label
@@ -317,7 +317,7 @@
/**
* Sets a map of label bindings in the receiver
*
- * @param bindings a Map<String, Integer> of label bindings
+ * @param bindings a {@link Map<String, Integer>} of label bindings
*/
void setLabelBindings(Map<String, Integer> bindings);
@@ -343,7 +343,7 @@
*
* @return an int
*/
- int size();
+ int getNumNondefaultElements();
/**
* Return a new matrix containing the product of each value of the recipient
@@ -365,13 +365,6 @@
Vector times(Vector x);
/**
- * Return the element of the recipient as a double[]
- *
- * @return a double[]
- */
- double[] toArray();
-
- /**
* Return a new matrix containing the subset of the recipient
*
* @param offset an int offset into the receiver
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/VectorView.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/VectorView.java?rev=786370&r1=786369&r2=786370&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/VectorView.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/matrix/VectorView.java Fri Jun 19 04:50:40 2009
@@ -62,13 +62,13 @@
}
@Override
- public int cardinality() {
+ public int size() {
return cardinality;
}
@Override
- public Vector copy() {
- return new VectorView(vector.copy(), offset, cardinality);
+ public Vector clone() {
+ return new VectorView(vector.clone(), offset, cardinality);
}
@Override
@@ -92,19 +92,11 @@
}
@Override
- public int size() {
+ public int getNumNondefaultElements() {
return cardinality;
}
@Override
- public double[] toArray() {
- double[] result = new double[cardinality];
- for (int i = 0; i < cardinality; i++)
- result[i] = vector.getQuick(offset + i);
- return result;
- }
-
- @Override
public Vector viewPart(int offset, int length) {
if (length > cardinality)
throw new CardinalityException();
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/utils/CosineDistanceMeasure.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/utils/CosineDistanceMeasure.java?rev=786370&r1=786369&r2=786370&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/utils/CosineDistanceMeasure.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/utils/CosineDistanceMeasure.java Fri Jun 19 04:50:40 2009
@@ -66,11 +66,11 @@
@Override
public double distance(Vector v1, Vector v2) {
- if (v1.cardinality() != v2.cardinality())
+ if (v1.size() != v2.size())
throw new CardinalityException();
double lengthSquaredv1 = 0.0;
double lengthSquaredv2 = 0.0;
- for (int i = 0; i < v1.cardinality(); i++) {
+ for (int i = 0; i < v1.size(); i++) {
lengthSquaredv1 += v1.getQuick(i) * v1.getQuick(i);
lengthSquaredv2 += v2.getQuick(i) * v2.getQuick(i);
}
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/utils/EuclideanDistanceMeasure.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/utils/EuclideanDistanceMeasure.java?rev=786370&r1=786369&r2=786370&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/utils/EuclideanDistanceMeasure.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/utils/EuclideanDistanceMeasure.java Fri Jun 19 04:50:40 2009
@@ -57,10 +57,10 @@
@Override
public double distance(Vector v1, Vector v2) {
- if (v1.cardinality() != v2.cardinality())
+ if (v1.size() != v2.size())
throw new CardinalityException();
double result = 0;
- for (int i = 0; i < v1.cardinality(); i++) {
+ for (int i = 0; i < v1.size(); i++) {
double delta = v2.getQuick(i) - v1.getQuick(i);
result += delta * delta;
}
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/utils/ManhattanDistanceMeasure.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/utils/ManhattanDistanceMeasure.java?rev=786370&r1=786369&r2=786370&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/utils/ManhattanDistanceMeasure.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/utils/ManhattanDistanceMeasure.java Fri Jun 19 04:50:40 2009
@@ -55,10 +55,10 @@
@Override
public double distance(Vector v1, Vector v2) {
- if (v1.cardinality() != v2.cardinality())
+ if (v1.size() != v2.size())
throw new CardinalityException();
double result = 0;
- for (int i = 0; i < v1.cardinality(); i++)
+ for (int i = 0; i < v1.size(); i++)
result += Math.abs(v2.getQuick(i) - v1.getQuick(i));
return result;
}
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/utils/TanimotoDistanceMeasure.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/utils/TanimotoDistanceMeasure.java?rev=786370&r1=786369&r2=786370&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/utils/TanimotoDistanceMeasure.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/utils/TanimotoDistanceMeasure.java Fri Jun 19 04:50:40 2009
@@ -46,7 +46,7 @@
// this whole distance measurent thing
// should be evaluated using an intermediate vector and BinaryFunction or something?
- Set<Integer> featuresSeen = new HashSet<Integer>((int)((vector0.size() + vector1.size()) * 0.75));
+ Set<Integer> featuresSeen = new HashSet<Integer>((int)((vector0.getNumNondefaultElements() + vector1.getNumNondefaultElements()) * 0.75));
double ab = 0.0;
double a2 = 0.0;
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/utils/WeightedEuclideanDistanceMeasure.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/utils/WeightedEuclideanDistanceMeasure.java?rev=786370&r1=786369&r2=786370&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/utils/WeightedEuclideanDistanceMeasure.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/utils/WeightedEuclideanDistanceMeasure.java Fri Jun 19 04:50:40 2009
@@ -30,11 +30,11 @@
double result = 0;
Vector res = p2.minus(p1);
if (weights == null) {
- for (int i = 0; i < p1.cardinality(); i++) {
+ for (int i = 0; i < p1.size(); i++) {
result += res.get(i) * res.get(i);
}
} else {
- for (int i = 0; i < p1.cardinality(); i++) {
+ for (int i = 0; i < p1.size(); i++) {
result += res.get(i) * res.get(i) * weights.get(i); // todo this is where the weights goes, right?
}
}
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/utils/WeightedManhattanDistanceMeasure.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/utils/WeightedManhattanDistanceMeasure.java?rev=786370&r1=786369&r2=786370&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/utils/WeightedManhattanDistanceMeasure.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/utils/WeightedManhattanDistanceMeasure.java Fri Jun 19 04:50:40 2009
@@ -31,12 +31,12 @@
Vector res = p2.minus(p1);
if (weights == null) {
- for (int i = 0; i < res.cardinality(); i++) {
+ for (int i = 0; i < res.size(); i++) {
result += Math.abs(res.get(i));
}
}
else {
- for (int i = 0; i < res.cardinality(); i++) {
+ for (int i = 0; i < res.size(); i++) {
result += Math.abs(res.get(i) * weights.get(i)); // todo this is where the weights goes, right?
}
}
Modified: lucene/mahout/trunk/core/src/test/java/org/apache/mahout/clustering/canopy/TestCanopyCreation.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/test/java/org/apache/mahout/clustering/canopy/TestCanopyCreation.java?rev=786370&r1=786369&r2=786370&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/test/java/org/apache/mahout/clustering/canopy/TestCanopyCreation.java (original)
+++ lucene/mahout/trunk/core/src/test/java/org/apache/mahout/clustering/canopy/TestCanopyCreation.java Fri Jun 19 04:50:40 2009
@@ -123,7 +123,7 @@
testCanopy.getNumPoints());
Vector refCentroid = refCanopy.computeCentroid();
Vector testCentroid = testCanopy.computeCentroid();
- for (int pointIx = 0; pointIx < refCentroid.cardinality(); pointIx++) {
+ for (int pointIx = 0; pointIx < refCentroid.size(); pointIx++) {
assertEquals("canopy centroid " + canopyIx + '[' + pointIx + ']',
refCentroid.get(pointIx), testCentroid.get(pointIx));
}
Modified: lucene/mahout/trunk/core/src/test/java/org/apache/mahout/clustering/dirichlet/TestMapReduce.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/test/java/org/apache/mahout/clustering/dirichlet/TestMapReduce.java?rev=786370&r1=786369&r2=786370&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/test/java/org/apache/mahout/clustering/dirichlet/TestMapReduce.java (original)
+++ lucene/mahout/trunk/core/src/test/java/org/apache/mahout/clustering/dirichlet/TestMapReduce.java Fri Jun 19 04:50:40 2009
@@ -322,8 +322,8 @@
assertEquals("modelFactory", state.modelFactory.getClass().getName(),
state2.modelFactory.getClass().getName());
assertEquals("clusters", state.clusters.size(), state2.clusters.size());
- assertEquals("mixture", state.mixture.cardinality(), state2.mixture
- .cardinality());
+ assertEquals("mixture", state.mixture.size(), state2.mixture
+ .size());
assertEquals("dirichlet", state.offset, state2.offset);
}
Modified: lucene/mahout/trunk/core/src/test/java/org/apache/mahout/matrix/MatrixTest.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/test/java/org/apache/mahout/matrix/MatrixTest.java?rev=786370&r1=786369&r2=786370&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/test/java/org/apache/mahout/matrix/MatrixTest.java (original)
+++ lucene/mahout/trunk/core/src/test/java/org/apache/mahout/matrix/MatrixTest.java Fri Jun 19 04:50:40 2009
@@ -46,14 +46,14 @@
public abstract Matrix matrixFactory(double[][] values);
public void testCardinality() {
- int[] c = test.cardinality();
+ int[] c = test.size();
assertEquals("row cardinality", values.length, c[ROW]);
assertEquals("col cardinality", values[0].length, c[COL]);
}
public void testCopy() {
- int[] c = test.cardinality();
- Matrix copy = test.copy();
+ int[] c = test.size();
+ Matrix copy = test.clone();
assertEquals("wrong class", copy.getClass(), test.getClass());
for (int row = 0; row < c[ROW]; row++)
for (int col = 0; col < c[COL]; col++)
@@ -62,7 +62,7 @@
}
public void testGetQuick() {
- int[] c = test.cardinality();
+ int[] c = test.size();
for (int row = 0; row < c[ROW]; row++)
for (int col = 0; col < c[COL]; col++)
assertEquals("value[" + row + "][" + col + ']', values[row][col], test
@@ -71,25 +71,25 @@
public void testHaveSharedCells() {
assertTrue("same", test.haveSharedCells(test));
- assertFalse("different", test.haveSharedCells(test.copy()));
+ assertFalse("different", test.haveSharedCells(test.clone()));
}
public void testLike() {
Matrix like = test.like();
assertEquals("type", like.getClass(), test.getClass());
- assertEquals("rows", test.cardinality()[ROW], like.cardinality()[ROW]);
- assertEquals("columns", test.cardinality()[COL], like.cardinality()[COL]);
+ assertEquals("rows", test.size()[ROW], like.size()[ROW]);
+ assertEquals("columns", test.size()[COL], like.size()[COL]);
}
public void testLikeIntInt() {
Matrix like = test.like(4, 4);
assertEquals("type", like.getClass(), test.getClass());
- assertEquals("rows", 4, like.cardinality()[ROW]);
- assertEquals("columns", 4, like.cardinality()[COL]);
+ assertEquals("rows", 4, like.size()[ROW]);
+ assertEquals("columns", 4, like.size()[COL]);
}
public void testSetQuick() {
- int[] c = test.cardinality();
+ int[] c = test.size();
for (int row = 0; row < c[ROW]; row++)
for (int col = 0; col < c[COL]; col++) {
test.setQuick(row, col, 1.23);
@@ -99,14 +99,14 @@
}
public void testSize() {
- int[] c = test.size();
+ int[] c = test.getNumNondefaultElements();
assertEquals("row size", values.length, c[ROW]);
assertEquals("col size", values[0].length, c[COL]);
}
public void testToArray() {
double[][] array = test.toArray();
- int[] c = test.cardinality();
+ int[] c = test.size();
for (int row = 0; row < c[ROW]; row++)
for (int col = 0; col < c[COL]; col++)
assertEquals("value[" + row + "][" + col + ']', values[row][col],
@@ -117,7 +117,7 @@
int[] offset = { 1, 1 };
int[] size = { 2, 1 };
Matrix view = test.viewPart(offset, size);
- int[] c = view.cardinality();
+ int[] c = view.size();
for (int row = 0; row < c[ROW]; row++)
for (int col = 0; col < c[COL]; col++)
assertEquals("value[" + row + "][" + col + ']',
@@ -164,7 +164,7 @@
}
public void testAssignDouble() {
- int[] c = test.cardinality();
+ int[] c = test.size();
test.assign(4.53);
for (int row = 0; row < c[ROW]; row++)
for (int col = 0; col < c[COL]; col++)
@@ -173,7 +173,7 @@
}
public void testAssignDoubleArrayArray() {
- int[] c = test.cardinality();
+ int[] c = test.size();
test.assign(new double[3][2]);
for (int row = 0; row < c[ROW]; row++)
for (int col = 0; col < c[COL]; col++)
@@ -182,7 +182,7 @@
}
public void testAssignDoubleArrayArrayCardinality() {
- int[] c = test.cardinality();
+ int[] c = test.size();
try {
test.assign(new double[c[ROW] + 1][c[COL]]);
fail("exception expected");
@@ -192,7 +192,7 @@
}
public void testAssignMatrixBinaryFunction() {
- int[] c = test.cardinality();
+ int[] c = test.size();
test.assign(test, new PlusFunction());
for (int row = 0; row < c[ROW]; row++)
for (int col = 0; col < c[COL]; col++)
@@ -210,7 +210,7 @@
}
public void testAssignMatrix() {
- int[] c = test.cardinality();
+ int[] c = test.size();
Matrix value = test.like();
value.assign(test);
for (int row = 0; row < c[ROW]; row++)
@@ -229,7 +229,7 @@
}
public void testAssignUnaryFunction() {
- int[] c = test.cardinality();
+ int[] c = test.size();
test.assign(new NegateFunction());
for (int row = 0; row < c[ROW]; row++)
for (int col = 0; col < c[COL]; col++)
@@ -238,7 +238,7 @@
}
public void testDivide() {
- int[] c = test.cardinality();
+ int[] c = test.size();
Matrix value = test.divide(4.53);
for (int row = 0; row < c[ROW]; row++)
for (int col = 0; col < c[COL]; col++)
@@ -247,7 +247,7 @@
}
public void testGet() {
- int[] c = test.cardinality();
+ int[] c = test.size();
for (int row = 0; row < c[ROW]; row++)
for (int col = 0; col < c[COL]; col++)
assertEquals("value[" + row + "][" + col + ']', values[row][col], test
@@ -255,7 +255,7 @@
}
public void testGetIndexUnder() {
- int[] c = test.cardinality();
+ int[] c = test.size();
try {
for (int row = -1; row < c[ROW]; row++)
for (int col = 0; col < c[COL]; col++)
@@ -267,7 +267,7 @@
}
public void testGetIndexOver() {
- int[] c = test.cardinality();
+ int[] c = test.size();
try {
for (int row = 0; row < c[ROW] + 1; row++)
for (int col = 0; col < c[COL]; col++)
@@ -279,7 +279,7 @@
}
public void testMinus() {
- int[] c = test.cardinality();
+ int[] c = test.size();
Matrix value = test.minus(test);
for (int row = 0; row < c[ROW]; row++)
for (int col = 0; col < c[COL]; col++)
@@ -297,7 +297,7 @@
}
public void testPlusDouble() {
- int[] c = test.cardinality();
+ int[] c = test.size();
Matrix value = test.plus(4.53);
for (int row = 0; row < c[ROW]; row++)
for (int col = 0; col < c[COL]; col++)
@@ -306,7 +306,7 @@
}
public void testPlusMatrix() {
- int[] c = test.cardinality();
+ int[] c = test.size();
Matrix value = test.plus(test);
for (int row = 0; row < c[ROW]; row++)
for (int col = 0; col < c[COL]; col++)
@@ -324,7 +324,7 @@
}
public void testSetUnder() {
- int[] c = test.cardinality();
+ int[] c = test.size();
try {
for (int row = -1; row < c[ROW]; row++)
for (int col = 0; col < c[COL]; col++) {
@@ -337,7 +337,7 @@
}
public void testSetOver() {
- int[] c = test.cardinality();
+ int[] c = test.size();
try {
for (int row = 0; row < c[ROW] + 1; row++)
for (int col = 0; col < c[COL]; col++) {
@@ -350,7 +350,7 @@
}
public void testTimesDouble() {
- int[] c = test.cardinality();
+ int[] c = test.size();
Matrix value = test.times(4.53);
for (int row = 0; row < c[ROW]; row++)
for (int col = 0; col < c[COL]; col++)
@@ -359,10 +359,10 @@
}
public void testTimesMatrix() {
- int[] c = test.cardinality();
+ int[] c = test.size();
Matrix transpose = test.transpose();
Matrix value = test.times(transpose);
- int[] v = value.cardinality();
+ int[] v = value.size();
assertEquals("rows", c[ROW], v[ROW]);
assertEquals("cols", c[ROW], v[COL]);
// TODO: check the math too, lazy
@@ -382,9 +382,9 @@
}
public void testTranspose() {
- int[] c = test.cardinality();
+ int[] c = test.size();
Matrix transpose = test.transpose();
- int[] t = transpose.cardinality();
+ int[] t = transpose.size();
assertEquals("rows", c[COL], t[ROW]);
assertEquals("cols", c[ROW], t[COL]);
for (int row = 0; row < c[ROW]; row++)
@@ -435,7 +435,7 @@
public void testGetRow() {
Vector row = test.getRow(1);
- assertEquals("row size", 2, row.size());
+ assertEquals("row size", 2, row.getNumNondefaultElements());
}
public void testGetRowIndexUnder() {
@@ -458,7 +458,7 @@
public void testGetColumn() {
Vector column = test.getColumn(1);
- assertEquals("row size", 3, column.size());
+ assertEquals("row size", 3, column.getNumNondefaultElements());
}
public void testGetColumnIndexUnder() {
Modified: lucene/mahout/trunk/core/src/test/java/org/apache/mahout/matrix/TestDenseVector.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/test/java/org/apache/mahout/matrix/TestDenseVector.java?rev=786370&r1=786369&r2=786370&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/test/java/org/apache/mahout/matrix/TestDenseVector.java (original)
+++ lucene/mahout/trunk/core/src/test/java/org/apache/mahout/matrix/TestDenseVector.java Fri Jun 19 04:50:40 2009
@@ -41,23 +41,23 @@
}
public void testCardinality() {
- assertEquals("cardinality", 3, test.cardinality());
+ assertEquals("cardinality", 3, test.size());
}
public void testCopy() throws Exception {
- Vector copy = test.copy();
- for (int i = 0; i < test.cardinality(); i++)
+ Vector copy = test.clone();
+ for (int i = 0; i < test.size(); i++)
assertEquals("copy [" + i + ']', test.get(i), copy.get(i));
}
public void testGet() throws Exception {
- for (int i = 0; i < test.cardinality(); i++)
+ for (int i = 0; i < test.size(); i++)
assertEquals("get [" + i + ']', values[i], test.get(i));
}
public void testGetOver() {
try {
- test.get(test.cardinality());
+ test.get(test.size());
fail("expected exception");
} catch (IndexException e) {
assertTrue(true);
@@ -75,7 +75,7 @@
public void testSet() throws Exception {
test.set(2, 4.5);
- for (int i = 0; i < test.cardinality(); i++)
+ for (int i = 0; i < test.size(); i++)
if (i == 2)
assertEquals("set [" + i + ']', 4.5, test.get(i));
else
@@ -83,19 +83,13 @@
}
public void testSize() throws Exception {
- assertEquals("size", 3, test.size());
- }
-
- public void testToArray() throws Exception {
- double[] val = test.toArray();
- for (int i = 0; i < test.cardinality(); i++)
- assertEquals("get [" + i + ']', val[i], test.get(i));
+ assertEquals("size", 3, test.getNumNondefaultElements());
}
public void testViewPart() throws Exception {
Vector part = test.viewPart(1, 2);
- assertEquals("part size", 2, part.size());
- for (int i = 0; i < part.cardinality(); i++)
+ assertEquals("part size", 2, part.getNumNondefaultElements());
+ for (int i = 0; i < part.size(); i++)
assertEquals("part[" + i + ']', values[i + 1], part.get(i));
}
@@ -134,19 +128,19 @@
public void testDecodeVector() throws Exception {
Vector val = AbstractVector.decodeVector(test.asFormatString());
- for (int i = 0; i < test.cardinality(); i++)
+ for (int i = 0; i < test.size(); i++)
assertEquals("get [" + i + ']', test.get(i), val.get(i));
}
public void testDenseVectorDoubleArray() throws Exception {
- for (int i = 0; i < test.cardinality(); i++)
+ for (int i = 0; i < test.size(); i++)
assertEquals("test[" + i + ']', values[i], test.get(i));
}
public void testDenseVectorInt() throws Exception {
Vector val = new DenseVector(4);
- assertEquals("cardinality", 4, val.cardinality());
- for (int i = 0; i < test.cardinality(); i++)
+ assertEquals("cardinality", 4, val.size());
+ for (int i = 0; i < test.size(); i++)
assertEquals("get [" + i + ']', 0.0, val.get(i));
}
@@ -157,7 +151,7 @@
public void testDotCardinality() {
try {
- test.dot(new DenseVector(test.cardinality() + 1));
+ test.dot(new DenseVector(test.size() + 1));
fail("expected exception");
} catch (CardinalityException e) {
assertTrue(true);
@@ -167,34 +161,34 @@
public void testNormalize() throws Exception {
Vector res = test.normalize();
double mag = Math.sqrt(1.1 * 1.1 + 2.2 * 2.2 + 3.3 * 3.3);
- for (int i = 0; i < test.cardinality(); i++)
+ for (int i = 0; i < test.size(); i++)
assertEquals("dot", values[i] / mag, res.get(i));
}
public void testMinus() throws Exception {
Vector val = test.minus(test);
- assertEquals("cardinality", 3, val.cardinality());
- for (int i = 0; i < test.cardinality(); i++)
+ assertEquals("cardinality", 3, val.size());
+ for (int i = 0; i < test.size(); i++)
assertEquals("get [" + i + ']', 0.0, val.get(i));
}
public void testPlusDouble() throws Exception {
Vector val = test.plus(1);
- assertEquals("cardinality", 3, val.cardinality());
- for (int i = 0; i < test.cardinality(); i++)
+ assertEquals("cardinality", 3, val.size());
+ for (int i = 0; i < test.size(); i++)
assertEquals("get [" + i + ']', values[i] + 1, val.get(i));
}
public void testPlusVector() throws Exception {
Vector val = test.plus(test);
- assertEquals("cardinality", 3, val.cardinality());
- for (int i = 0; i < test.cardinality(); i++)
+ assertEquals("cardinality", 3, val.size());
+ for (int i = 0; i < test.size(); i++)
assertEquals("get [" + i + ']', values[i] * 2, val.get(i));
}
public void testPlusVectorCardinality() {
try {
- test.plus(new DenseVector(test.cardinality() + 1));
+ test.plus(new DenseVector(test.size() + 1));
fail("expected exception");
} catch (CardinalityException e) {
assertTrue(true);
@@ -203,28 +197,28 @@
public void testTimesDouble() throws Exception {
Vector val = test.times(3);
- assertEquals("cardinality", 3, val.cardinality());
- for (int i = 0; i < test.cardinality(); i++)
+ assertEquals("cardinality", 3, val.size());
+ for (int i = 0; i < test.size(); i++)
assertEquals("get [" + i + ']', values[i] * 3, val.get(i));
}
public void testDivideDouble() throws Exception {
Vector val = test.divide(3);
- assertEquals("cardinality", 3, val.cardinality());
- for (int i = 0; i < test.cardinality(); i++)
+ assertEquals("cardinality", 3, val.size());
+ for (int i = 0; i < test.size(); i++)
assertEquals("get [" + i + ']', values[i] / 3, val.get(i));
}
public void testTimesVector() throws Exception {
Vector val = test.times(test);
- assertEquals("cardinality", 3, val.cardinality());
- for (int i = 0; i < test.cardinality(); i++)
+ assertEquals("cardinality", 3, val.size());
+ for (int i = 0; i < test.size(); i++)
assertEquals("get [" + i + ']', values[i] * values[i], val.get(i));
}
public void testTimesVectorCardinality() {
try {
- test.times(new DenseVector(test.cardinality() + 1));
+ test.times(new DenseVector(test.size() + 1));
fail("expected exception");
} catch (CardinalityException e) {
assertTrue(true);
@@ -247,7 +241,7 @@
}
public void testAssignDoubleArray() throws Exception {
- double[] array = new double[test.cardinality()];
+ double[] array = new double[test.size()];
test.assign(array);
for (int i = 0; i < values.length; i++) {
assertEquals("value[" + i + ']', 0.0, test.getQuick(i));
@@ -255,7 +249,7 @@
}
public void testAssignDoubleArrayCardinality() {
- double[] array = new double[test.cardinality() + 1];
+ double[] array = new double[test.size() + 1];
try {
test.assign(array);
fail("cardinality exception expected");
@@ -265,7 +259,7 @@
}
public void testAssignVector() throws Exception {
- Vector other = new DenseVector(test.cardinality());
+ Vector other = new DenseVector(test.size());
test.assign(other);
for (int i = 0; i < values.length; i++) {
assertEquals("value[" + i + ']', 0.0, test.getQuick(i));
@@ -273,7 +267,7 @@
}
public void testAssignVectorCardinality() {
- Vector other = new DenseVector(test.cardinality() - 1);
+ Vector other = new DenseVector(test.size() - 1);
try {
test.assign(other);
fail("cardinality exception expected");
@@ -342,15 +336,15 @@
public void testLikeN() {
Vector other = test.like(5);
assertTrue("not like", other instanceof DenseVector);
- assertEquals("cardinality", 5, other.cardinality());
+ assertEquals("size", 5, other.size());
}
public void testCrossProduct() {
Matrix result = test.cross(test);
- assertEquals("row cardinality", test.cardinality(), result.cardinality()[0]);
- assertEquals("col cardinality", test.cardinality(), result.cardinality()[1]);
- for (int row = 0; row < result.cardinality()[0]; row++) {
- for (int col = 0; col < result.cardinality()[1]; col++) {
+ assertEquals("row size", test.size(), result.size()[0]);
+ assertEquals("col size", test.size(), result.size()[1]);
+ for (int row = 0; row < result.size()[0]; row++) {
+ for (int col = 0; col < result.size()[1]; col++) {
assertEquals("cross[" + row + "][" + col + ']', test.getQuick(row)
* test.getQuick(col), result.getQuick(row, col));
}
Re: svn commit: r786370 [1/2] - in /lucene/mahout/trunk: core/src/main/java/org/apache/mahout/clustering/canopy/
core/src/main/java/org/apache/mahout/clustering/dirichlet/ core/src/main/java/org/apache/mahout/clustering/dirichlet/models/
core/src/main/java...
Posted by Jeff Eastman <jd...@windwardsolutions.com>.
Should Vector extend Cloneable too? I'm going to implement Matrix
Writable today.
Jeff