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 2010/01/22 15:47:03 UTC
svn commit: r902105 - in
/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/math:
MultiLabelVectorWritable.java SequentialAccessSparseVectorWritable.java
Author: srowen
Date: Fri Jan 22 14:47:03 2010
New Revision: 902105
URL: http://svn.apache.org/viewvc?rev=902105&view=rev
Log:
MAHOUT-262
Added:
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/math/MultiLabelVectorWritable.java
Modified:
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/math/SequentialAccessSparseVectorWritable.java
Added: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/math/MultiLabelVectorWritable.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/math/MultiLabelVectorWritable.java?rev=902105&view=auto
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/math/MultiLabelVectorWritable.java (added)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/math/MultiLabelVectorWritable.java Fri Jan 22 14:47:03 2010
@@ -0,0 +1,81 @@
+/**
+ * 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.math;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+/**
+ * Writable to handle serialization of a vector and a variable list of
+ * associated label indexes.
+ */
+public class MultiLabelVectorWritable extends VectorWritable {
+
+ private int[] labels;
+
+ public void setLabels(int[] labels) {
+ this.labels = labels;
+ }
+
+ public int[] getLabels() {
+ return labels;
+ }
+
+ public MultiLabelVectorWritable() {}
+
+ public MultiLabelVectorWritable(Vector v, int[] labels) {
+ super(v);
+ setLabels(labels);
+ }
+
+ @Override
+ public void readFields(DataInput in) throws IOException {
+ int labelSize = in.readInt();
+ labels = new int[labelSize];
+ for (int i = 0; i < labelSize; i++) {
+ labels[i] = in.readInt();
+ }
+ super.readFields(in);
+ }
+
+ @Override
+ public void write(DataOutput out) throws IOException {
+ out.writeInt(labels.length);
+ for (int i = 0; i < labels.length; i++) {
+ out.writeInt(labels[i]);
+ }
+ super.write(out);
+ }
+
+ public static MultiLabelVectorWritable read(DataInput in) throws IOException {
+ int labelSize = in.readInt();
+ int[] labels = new int[labelSize];
+ for (int i = 0; i < labelSize; i++) {
+ labels[i] = in.readInt();
+ }
+ Vector vector = VectorWritable.readVector(in);
+ return new MultiLabelVectorWritable(vector, labels);
+ }
+
+ public static void write(DataOutput out, SequentialAccessSparseVector ssv,
+ int[] labels) throws IOException {
+ (new MultiLabelVectorWritable(ssv, labels)).write(out);
+ }
+
+}
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/math/SequentialAccessSparseVectorWritable.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/math/SequentialAccessSparseVectorWritable.java?rev=902105&r1=902104&r2=902105&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/math/SequentialAccessSparseVectorWritable.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/math/SequentialAccessSparseVectorWritable.java Fri Jan 22 14:47:03 2010
@@ -17,13 +17,12 @@
package org.apache.mahout.math;
-import org.apache.hadoop.io.Writable;
-
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import java.util.Iterator;
+import org.apache.hadoop.io.Writable;
public class SequentialAccessSparseVectorWritable extends SequentialAccessSparseVector implements Writable {
@@ -45,7 +44,7 @@
Iterator<Element> iter = iterateNonZero();
int count = 0;
while (iter.hasNext()) {
- Vector.Element element = iter.next();
+ Element element = iter.next();
dataOutput.writeInt(element.index());
dataOutput.writeDouble(element.get());
count++;
@@ -61,14 +60,12 @@
} else {
setName(className); // we have already read the class name in VectorWritable
}
- int cardinality = dataInput.readInt();
- int size = dataInput.readInt();
- OrderedIntDoubleMapping values = new OrderedIntDoubleMapping(size);
- int i = 0;
- for (; i < size; i++) {
+ size = dataInput.readInt();
+ int nde = dataInput.readInt();
+ OrderedIntDoubleMapping values = new OrderedIntDoubleMapping(nde);
+ for (int i = 0; i < nde; i++) {
values.set(dataInput.readInt(), dataInput.readDouble());
}
- assert (i == size);
this.values = values;
}