List of usage examples for org.apache.mahout.math DenseVector get
@Override public double get(int index)
From source file:org.qcri.pca.Norm2Job.java
/** * To compute the norm2 of a sparse matrix, iterate over sparse items and sum * square of the difference. After processing each row, add the sum of the * meanSquare of the zero-elements that were ignored in the sparse iteration. * //from www . j a v a 2s .c om * @param sparseVector * the sparse vector of data * @param meanVector * the vector of means * @param meanSquareSum * sum of the square of all the means, including for zero and * non-zero elements * @return */ static double norm2OfUncentralizedSparseVector(Vector sparseVector, DenseVector meanVector, double meanSquareSum) { double norm2 = 0; double meanSquareSumOfZeroElements = meanSquareSum; Iterator<Vector.Element> iterator = sparseVector.nonZeroes().iterator(); while (iterator.hasNext()) { Vector.Element element = iterator.next(); double v = element.get(); double mean = meanVector.get(element.index()); double diff = v - mean; diff *= diff; // cancel the effect of the non-zero element in meanSquareSum meanSquareSumOfZeroElements -= mean * mean; norm2 += diff; } // For all all zero items, the following has the sum of mean square norm2 += meanSquareSumOfZeroElements; return norm2; }
From source file:root.hap.availability.AvailabilityReducer.java
License:Apache License
private void updateTau(Context context, DenseVector RLevelBelow, DenseVector CLevelBelow, DenseVector T, int reducerColNum, int reducerLevelNum, int N, String tau) throws IOException, InterruptedException { double sumOfPositives = 0.0; for (int rowNum = 0; rowNum < N; rowNum++) { if (rowNum == reducerColNum) { continue; }/*w w w .j av a 2 s . co m*/ double value = RLevelBelow.get(rowNum); sumOfPositives += (value > 0) ? value : 0; } double rhoValue = RLevelBelow.get(reducerColNum); double exemplarValue = CLevelBelow.get(0); // "CValue" double tauValue = rhoValue + exemplarValue + sumOfPositives; T.setQuick(0, tauValue); VectorWritable TWritable = new VectorWritable(T); context.write(new Text(reducerColNum + "\t" + reducerLevelNum + "\t" + tau), TWritable); }
From source file:root.hap.availability.AvailabilityReducer.java
License:Apache License
private void updateAvailability(Context context, DenseVector A, DenseVector R, DenseVector S, DenseVector P, DenseVector C, int reducerColNum, int reducerLevelNum, int N, String availability) throws IOException, InterruptedException { DenseVector oldA = A.clone();//from www . jav a 2 s . c o m // get positive values into RPositive DenseVector RPositive = R.clone(); for (int rowNum = 0; rowNum < N; rowNum++) { double RValue = RPositive.get(rowNum); if (RValue < 0) { RPositive.setQuick(rowNum, 0); } } // reset diagonal value from R RPositive.setQuick(reducerColNum, R.get(reducerColNum)); // sum R Positive values double RPSum = RPositive.zSum(); double CVal = C.get(0); double PVal = P.get(0); double CHat = CVal + PVal; // sum together CHat and RPSum into a vector A.assign(CHat + RPSum); A = (DenseVector) A.minus(RPositive); for (int rowNum = 0; rowNum < N; rowNum++) { if (rowNum == reducerColNum) { continue; } double value = A.get(rowNum) < 0 ? A.get(rowNum) : 0; A.setQuick(rowNum, value); } double lambda = context.getConfiguration().getFloat("lambda", 0); A = (DenseVector) A.times(1 - lambda); oldA = (DenseVector) oldA.times(lambda); A = (DenseVector) A.plus(oldA); VectorWritable AWritable = new VectorWritable(A); context.write(new Text(reducerColNum + "\t" + reducerLevelNum + "\t" + availability), AWritable); }
From source file:root.hap.cluster.ClusterReducer.java
License:Apache License
private void updateExemplars(Context context, DenseVector A, DenseVector diagA, DenseVector R, DenseVector diagR, int reducerRowNum, int reducerLevelNum, int N) throws IOException, InterruptedException { boolean[] validExemplars = new boolean[N]; boolean validExist = false; Arrays.fill(validExemplars, false); for (int diagIter = 0; diagIter < N; diagIter++) { double diagVal = diagA.get(diagIter) + diagR.get(diagIter); if (diagVal > 0) { validExemplars[diagIter] = true; validExist = true;// ww w . java 2 s .com } } DenseVector sum = (DenseVector) A.plus(R); double maxValue = Double.NEGATIVE_INFINITY; int maxValueIndex = sum.maxValueIndex(); if (validExist) { for (int diagIter = 0; diagIter < N; diagIter++) { double validValue = sum.get(diagIter); if (validExemplars[diagIter] && validValue > maxValue) { maxValue = validValue; maxValueIndex = diagIter; } } } else { maxValue = sum.maxValue(); maxValueIndex = sum.maxValueIndex(); } Text output = new Text(maxValueIndex + "\t" + reducerRowNum + "\t" + reducerLevelNum); // Sentinel: In case an invalid exemplar ID is passed to output. if (maxValueIndex != -1) { context.write(new Text(), output); } }
From source file:root.hap.responsibility.ResponsibilityReducer.java
License:Apache License
private void updateExemplars(Context context, DenseVector A, DenseVector R, DenseVector diagA, DenseVector diagR, DenseVector C, int reducerRowNum, int reducerLevelNum, int N, String exemplar) throws IOException, InterruptedException { boolean[] validExemplars = new boolean[N]; boolean validExist = false; Arrays.fill(validExemplars, false); for (int diagIter = 0; diagIter < N; diagIter++) { double diagVal = diagA.get(diagIter) + diagR.get(diagIter); if (diagVal > 0) { validExemplars[diagIter] = true; validExist = true;/* w w w .j a v a 2 s . c om*/ } } DenseVector sum = (DenseVector) A.plus(R); double maxValue = Double.NEGATIVE_INFINITY; if (validExist) { for (int diagIter = 0; diagIter < N; diagIter++) { double validValue = sum.get(diagIter); if (validExemplars[diagIter] && validValue > maxValue) { maxValue = validValue; } } } else { maxValue = sum.maxValue(); } C.setQuick(0, maxValue); VectorWritable CWritable = new VectorWritable(C); context.write(new Text(reducerRowNum + "\t" + reducerLevelNum + "\t" + exemplar), CWritable); }
From source file:root.hap.responsibility.ResponsibilityReducer.java
License:Apache License
private void updateResponsibility(Context context, DenseVector A, DenseVector S, DenseVector R, DenseVector T, int reducerLevelNum, int reducerRowNum, int N, String responsibilty) throws IOException, InterruptedException { DenseVector oldR = R.clone();/*from w w w. ja va 2 s . c o m*/ DenseVector sum = (DenseVector) A.plus(S); double maxValue = sum.maxValue(); int maxValueIndex = sum.maxValueIndex(); maxValue *= -1; sum.set(maxValueIndex, Double.NEGATIVE_INFINITY); double tau = T.get(0); double YH = Math.min(maxValue, tau); double actualMax = sum.maxValue(); actualMax *= -1; double YH2 = Math.min(actualMax, tau); R = (DenseVector) S.plus(YH); R.setQuick(maxValueIndex, S.get(maxValueIndex) + YH2); // Dampen double lambda = context.getConfiguration().getFloat("lambda", 0); R = (DenseVector) R.times(1 - lambda); oldR = (DenseVector) oldR.times(lambda); R = (DenseVector) R.plus(oldR); VectorWritable RWritable = new VectorWritable(R); context.write(new Text(reducerRowNum + "\t" + reducerLevelNum + "\t" + responsibilty), RWritable); }