Example usage for org.apache.mahout.math Vector isDense

List of usage examples for org.apache.mahout.math Vector isDense

Introduction

In this page you can find the example usage for org.apache.mahout.math Vector isDense.

Prototype

boolean isDense();

Source Link

Document

true if this implementation should be considered dense -- that it explicitly represents every value

Usage

From source file:com.cloudera.science.ml.kmeans.parallel.CentersIndex.java

License:Open Source License

private BitSet index(Vector vec) {
    double[] prod = new double[projectionBits];
    if (vec.isDense()) {
        for (int i = 0; i < vec.size(); i++) {
            double v = vec.getQuick(i);
            if (v != 0.0) {
                for (int j = 0; j < projectionBits; j++) {
                    prod[j] += v * projection[i + j * dimensions];
                }//from  w w  w.java  2 s  . c  o m
            }
        }
    } else {
        Iterator<Vector.Element> iter = vec.iterateNonZero();
        while (iter.hasNext()) {
            Vector.Element e = iter.next();
            for (int j = 0; j < projectionBits; j++) {
                prod[j] = e.get() * projection[e.index() + j * dimensions];
            }
        }
    }
    BitSet bitset = new BitSet(projectionBits);
    for (int i = 0; i < projectionBits; i++) {
        if (prod[i] > 0.0) {
            bitset.set(i);
        }
    }
    return bitset;
}

From source file:com.cloudera.science.ml.kmeans.parallel.CentersIndex.java

License:Open Source License

private static double dot(Vector vec, double[] p) {
    double dot = 0;
    if (vec.isDense()) {
        for (int i = 0; i < p.length; i++) {
            dot += vec.getQuick(i) * p[i];
        }/*from w  w  w  .jav  a2 s  . com*/
    } else {
        Iterator<Vector.Element> iter = vec.iterateNonZero();
        while (iter.hasNext()) {
            Vector.Element e = iter.next();
            dot += e.get() * p[e.index()];
        }
    }
    return dot;
}

From source file:com.ikanow.infinit.e.processing.custom.utils.HadoopUtils.java

License:Open Source License

private static BasicDBList listFromMahoutVector(Vector vec, String prefix, BasicDBObject element) {
    if (vec instanceof NamedVector) {
        element.put(prefix + "Name", ((NamedVector) vec).getName());
    }/*from www  .j  a v  a2  s  .c  o m*/
    BasicDBList dbl2 = new BasicDBList();
    if (vec.isDense()) {
        int nSize = vec.size();
        dbl2.ensureCapacity(nSize);
        for (int i = 0; i < nSize; ++i) {
            dbl2.add(vec.getQuick(i));
        }
    } else { // sparse, write as a set in the format [{int:double}]
        Iterator<org.apache.mahout.math.Vector.Element> elIt = vec.iterateNonZero();
        while (elIt.hasNext()) {
            BasicDBObject el2 = new BasicDBObject();
            org.apache.mahout.math.Vector.Element el = elIt.next();
            el2.put("k", el.index());
            el2.put("v", el.get());
            dbl2.add(el2);
        }
    }
    return dbl2;
}

From source file:edu.rosehulman.mahout.math.VectorWritable.java

License:Apache License

public static void writeVector(DataOutput out, Vector vector, boolean laxPrecision) throws IOException {
    boolean dense = vector.isDense();
    boolean sequential = vector.isSequentialAccess();
    boolean named = vector instanceof NamedVector;

    out.writeByte((dense ? FLAG_DENSE : 0) | (sequential ? FLAG_SEQUENTIAL : 0) | (named ? FLAG_NAMED : 0)
            | (laxPrecision ? FLAG_LAX_PRECISION : 0));

    Varint.writeUnsignedVarInt(vector.size(), out);
    if (dense) {//w  w w  .jav  a 2 s  .co  m
        for (Vector.Element element : vector.all()) {
            if (laxPrecision) {
                out.writeFloat((float) element.get());
            } else {
                out.writeDouble(element.get());
            }
        }
    } else {
        Varint.writeUnsignedVarInt(vector.getNumNonZeroElements(), out);
        Iterator<Element> iter = vector.nonZeroes().iterator();
        if (sequential) {
            int lastIndex = 0;
            while (iter.hasNext()) {
                Vector.Element element = iter.next();
                if (element.get() == 0) {
                    continue;
                }
                int thisIndex = element.index();
                // Delta-code indices:
                Varint.writeUnsignedVarInt(thisIndex - lastIndex, out);
                lastIndex = thisIndex;
                if (laxPrecision) {
                    out.writeFloat((float) element.get());
                } else {
                    out.writeDouble(element.get());
                }
            }
        } else {
            while (iter.hasNext()) {
                Vector.Element element = iter.next();
                if (element.get() == 0) {
                    // TODO(robinanil): Fix the damn iterator for the zero element.
                    continue;
                }
                Varint.writeUnsignedVarInt(element.index(), out);
                if (laxPrecision) {
                    out.writeFloat((float) element.get());
                } else {
                    out.writeDouble(element.get());
                }
            }
        }
    }
    if (named) {
        String name = ((NamedVector) vector).getName();
        out.writeUTF(name == null ? "" : name);
    }
}