Package de.jungblut.math

Examples of de.jungblut.math.DoubleVector


  }

  @Override
  public double calculateError(DoubleVector y, DoubleVector hypothesis) {

    DoubleVector negativeOutcome = y.subtractFrom(1.0d);
    DoubleVector inverseOutcome = y.multiply(-1d);
    DoubleVector negativeHypo = hypothesis.subtractFrom(1d);
    DoubleVector negativeLogHypo = MathUtils.logVector(negativeHypo);
    DoubleVector positiveLogHypo = MathUtils.logVector(hypothesis);
    DoubleVector negativePenalty = negativeOutcome.multiply(negativeLogHypo);
    DoubleVector positivePenalty = inverseOutcome.multiply(positiveLogHypo);

    return (positivePenalty.subtract(negativePenalty)).sum();
  }
View Full Code Here


    if (matrix.isSparse()) {
      // if we have a sparse matrix, it is more efficient to loop over the
      // sparse row vectors
      int[] rows = matrix.rowIndices();
      for (int row : rows) {
        DoubleVector rowVector = matrix.getRowVector(row);
        if (rowVector.getLength() > 0) {
          DoubleVector apply = apply(rowVector);
          newInstance.setRowVector(row, apply);
        }
      }
    } else {
      // on dense matrices we can be faster by directly looping over the items
View Full Code Here

    return newInstance;
  }

  @Override
  public DoubleVector gradient(DoubleVector vector) {
    DoubleVector newInstance = newInstance(vector);
    if (vector.isSparse()) {
      Iterator<DoubleVectorElement> iterateNonZero = vector.iterateNonZero();
      while (iterateNonZero.hasNext()) {
        DoubleVectorElement next = iterateNonZero.next();
        newInstance.set(next.getIndex(), gradient(next.getValue()));
      }
    } else {
      for (int i = 0; i < vector.getDimension(); i++) {
        newInstance.set(i, gradient(vector.get(i)));
      }
    }
    return newInstance;
  }
View Full Code Here

   */
  public static DoubleVector readImageAsGreyScale(BufferedImage img) {
    final int h = img.getHeight();
    final int w = img.getWidth();

    DoubleVector vector = new DenseDoubleVector(h * w);
    int[] rgb = img.getRGB(0, 0, w, h, null, 0, w);
    for (int i = 0; i < rgb.length; i++) {
      int red = (rgb[i] >> 16) & 0xFF;
      int green = (rgb[i] >> 8) & 0xFF;
      int blue = (rgb[i] >> 0) & 0xFF;
      vector.set(i, (red + green + blue) / 3d);
    }
    return vector;
  }
View Full Code Here

  @Override
  public double calculateError(DoubleMatrix y, DoubleMatrix hypothesis) {
    double hammingSum = 0d;
    // we now loop row-wise over the matrices
    for (int row = 0; row < y.getRowCount(); row++) {
      DoubleVector yRow = y.getRowVector(row);
      DoubleVector hypRow = hypothesis.getRowVector(row);
      hammingSum += calculateError(yRow, hypRow);
    }

    return hammingSum / y.getRowCount();
  }
View Full Code Here

  @Override
  protected void reduce(ClusterCenter key, Iterable<VectorWritable> values,
      Context context) throws IOException, InterruptedException {

    List<VectorWritable> vectorList = new ArrayList<>();
    DoubleVector newCenter = null;
    for (VectorWritable value : values) {
      vectorList.add(new VectorWritable(value));
      if (newCenter == null)
        newCenter = value.getVector().deepCopy();
      else
        newCenter = newCenter.add(value.getVector());
    }

    newCenter = newCenter.divide(vectorList.size());
    ClusterCenter center = new ClusterCenter(newCenter);
    centers.add(center);
    for (VectorWritable vector : vectorList) {
      context.write(center, vector);
    }
View Full Code Here

      // in every iteration we initialize a new model that is a copy of the old
      DoubleMatrix transitionProbabilityMatrix = this.transitionProbabilityMatrix
          .deepCopy();
      DoubleMatrix emissionProbabilityMatrix = this.emissionProbabilityMatrix
          .deepCopy();
      DoubleVector hiddenPriorProbability = this.hiddenPriorProbability
          .deepCopy();

      // expectation step
      alpha = forward(alpha, transitionProbabilityMatrix,
          emissionProbabilityMatrix, hiddenPriorProbability, features);
View Full Code Here

    for (int row = 0; row < transitionProbabilityMatrix.getRowCount(); row++) {
      // note that we are using row vectors here, because dense matrices give us
      // the underlying array wrapped by the vector object so we can directly
      // mutate the values beneath
      DoubleVector rowVector = transitionProbabilityMatrix.getRowVector(row);
      rowVector = rowVector.divide(rowVector.sum());
      if (log) {
        rowVector = rowVector.log();
      }
      transitionProbabilityMatrix.setRowVector(row, rowVector);
      rowVector = emissionProbabilitiyMatrix.getRowVector(row);
      rowVector = rowVector.divide(rowVector.sum());
      if (log) {
        rowVector = rowVector.log();
      }
      emissionProbabilitiyMatrix.setRowVector(row, rowVector);
    }
  }
View Full Code Here

    DoubleMatrix thetaGradient = positiveAssociations.subtract(
        negativeAssociations).divide(data.getRowCount());

    // calculate the weight decay and apply it
    if (lambda != 0d) {
      DoubleVector bias = thetaGradient.getColumnVector(0);
      thetaGradient = thetaGradient.subtract(thetaGradient.multiply(lambda
          / data.getRowCount()));
      thetaGradient.setColumnVector(0, bias);
    }
View Full Code Here

    }
  }

  @Override
  public DoubleVector predictProbability(DoubleVector features) {
    DoubleVector prediction = predict(features);
    if (numOutcomes != 2) {
      prediction = prediction.divide(prediction.sum());
    }
    return prediction;
  }
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.