Package de.jungblut.math

Examples of de.jungblut.math.DoubleVector


    for (int i = 0; i < classifier.length; i++) {
      result[i] = classifier[i].predict(features);
    }
    int numPossibleOutcomes = result[0].getDimension() == 1 ? 2 : result[0]
        .getDimension();
    DoubleVector toReturn = new DenseDoubleVector(
        result[0].getDimension() == 1 ? 1 : numPossibleOutcomes);
    // now combine the results based on the rule
    switch (type) {
      case MAJORITY:
        double[] histogram = createPredictionHistogram(result,
            numPossibleOutcomes);
        if (numPossibleOutcomes == 2) {
          toReturn.set(0, ArrayUtils.maxIndex(histogram));
        } else {
          toReturn.set(ArrayUtils.maxIndex(histogram), 1d);
        }
        break;
      case PROBABILITY:
        histogram = createPredictionHistogram(result, numPossibleOutcomes);
        double histSum = 0;
        for (double d : histogram) {
          histSum += d;
        }
        if (numPossibleOutcomes == 2) {
          toReturn.set(0, histogram[1] / histSum);
        } else {
          for (int i = 0; i < histogram.length; i++) {
            toReturn.set(i, histogram[i] / histSum);
          }
        }
        break;
      case AVERAGE:
        for (int i = 0; i < result.length; i++) {
          toReturn = toReturn.add(result[i]);
        }
        toReturn = toReturn.divide(classifier.length);
        break;
      default:
        throw new UnsupportedOperationException("Type " + type
            + " isn't supported yet!");
    }
View Full Code Here


    // know we know the token distribution per class, we can calculate the
    // probability. It is intended for them to be negative in some cases
    for (int row = 0; row < numDistinctClasses; row++) {
      // we can quite efficiently iterate over the non-zero row vectors now
      DoubleVector rowVector = probabilityMatrix.getRowVector(row);
      // don't care about not occuring words, we honor them with a very small
      // probability later on when predicting, here we save a lot space.
      Iterator<DoubleVectorElement> iterateNonZero = rowVector.iterateNonZero();
      double normalizer = FastMath.log(tokenPerClass[row]
          + probabilityMatrix.getColumnCount() - 1);
      while (iterateNonZero.hasNext()) {
        DoubleVectorElement next = iterateNonZero.next();
        double currentWordCount = next.getValue();
View Full Code Here

    BitSet set = new BitSet(values.size());
    int items = 0;
    for (int i = 0; i < values.size(); i++) {
      if (!set.get(i)) {
        DoubleVector v = values.get(i);
        DoubleVector center = v.deepCopy();
        List<VectorDistanceTuple<Integer>> nns = tree.getNearestNeighbours(v,
            k, t1);
        int sum = 1;
        for (VectorDistanceTuple<Integer> nn : nns) {
          if (nn.getDistance() < t1 && !set.get(nn.getValue())) {
            sum++;
            set.set(nn.getValue());
            center = center.add(nn.getVector());
          }
        }
        // ignore clusters violating the threshold.
        if (sum >= minSize) {
          DoubleVector newCenter = center.divide(sum);
          if (mergeOverlaps) {
            boolean noOverlap = true;
            // merge overlapping clusters within our t1
            for (int x = 0; x < centers.size(); x++) {
              DoubleVector ref = centers.get(x);
              double dist = EuclidianDistance.get().measureDistance(ref,
                  newCenter);
              if (dist < t1) {
                // average both centers
                centers.set(x, ref.add(newCenter).divide(2d));
                noOverlap = false;
                break;
              }
            }
            if (noOverlap) {
View Full Code Here

    out.writeInt(mat.getColumnCount());
    int[] rowIndices = mat.rowIndices();
    out.writeInt(rowIndices.length);
    for (int row : rowIndices) {
      out.writeInt(row);
      DoubleVector rowVector = mat.getRowVector(row);
      out.writeInt(rowVector.getLength());
      Iterator<DoubleVectorElement> iterateNonZero = rowVector.iterateNonZero();
      while (iterateNonZero.hasNext()) {
        DoubleVectorElement next = iterateNonZero.next();
        out.writeInt(next.getIndex());
        out.writeDouble(next.getValue());
      }
View Full Code Here

    final int numRowIndices = in.readInt();
    for (int i = 0; i < numRowIndices; i++) {
      final int rowIndex = in.readInt();
      final int numColumns = in.readInt();
      DoubleVector row = new SparseDoubleVector(mat.getColumnCount());
      for (int j = 0; j < numColumns; j++) {
        row.set(in.readInt(), in.readDouble());
      }
      mat.setRowVector(rowIndex, row);
    }

    return mat;
View Full Code Here

        int index = 0;
        for (int i = 0; i < line.length; i++) {
          if (i != outcomeIndex)
            fArray[index++] = Double.parseDouble(line[i]);
        }
        DoubleVector f = new DenseDoubleVector(fArray);
        DenseDoubleVector o = new DenseDoubleVector(1);
        o.set(0, Double.parseDouble(line[outcomeIndex]));
        featureList.add(f);
        outcomeList.add(o);
      }
View Full Code Here

  public void computeCenters(Deque<DoubleVector>[] assignments) {
    IntStream.range(0, assignments.length).parallel().forEach((i) -> {
      int len = assignments[i].size();
      if (len > 0) {
        DoubleVector sumVector = assignments[i].pop();
        while (!assignments[i].isEmpty()) {
          sumVector = sumVector.add(assignments[i].pop());
        }
        centers[i] = sumVector.divide(len);
      }
    });
  }
View Full Code Here

    return assignments;
  }

  public double assign(DistanceMeasurer distanceMeasurer,
      Deque<DoubleVector>[] assignments, int vectorIndex) {
    DoubleVector v = vectors.get(vectorIndex);
    int lowestDistantCenter = 0;
    double lowestDistance = Double.MAX_VALUE;
    for (int i = 0; i < centers.length; i++) {
      final double estimatedDistance = distanceMeasurer.measureDistance(
          centers[i], v);
View Full Code Here

      indexMapping.put(index, featureMap);
    }

    // now we have the mappings, we can loop again over all lines
    for (String[] line : buffer) {
      DoubleVector vec = new DenseDoubleVector(line.length);
      for (int i = 0; i < line.length; i++) {
        HashMap<String, Integer> hashMap = indexMapping.get(i);
        Integer value = hashMap.get(line[i]);
        vec.set(i, value);
      }
      // and add the mappings to the vectorlist
      list.add(vec);
    }

    DoubleVector[] features = new DoubleVector[list.size()];
    DoubleVector[] outcome = new DoubleVector[list.size()];
    for (int i = 0; i < list.size(); i++) {
      DoubleVector doubleVector = list.get(i);
      features[i] = doubleVector.slice(doubleVector.getLength() - 1);
      outcome[i] = new SingleEntryDoubleVector(doubleVector.get(doubleVector
          .getLength() - 1));
    }

    return new Dataset(features, outcome);
  }
View Full Code Here

  }

  public static DoubleVector readVector(DataInput in) throws IOException {

    int typeByte = in.readByte();
    DoubleVector vector = null;
    switch (typeByte) {
      case SPARSE:
        int length = in.readInt();
        int dim = in.readInt();
        vector = new SparseDoubleVector(dim);
        for (int i = 0; i < length; i++) {
          int index = in.readInt();
          double value = in.readDouble();
          vector.set(index, value);
        }
        break;
      case DENSE:
        length = in.readInt();
        vector = new DenseDoubleVector(length);
        for (int i = 0; i < length; i++) {
          vector.set(i, in.readDouble());
        }
        break;
      case SINGLE:
        vector = new SingleEntryDoubleVector(in.readDouble());
        break;
View Full Code Here

TOP

Related Classes of de.jungblut.math.DoubleVector

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.