code: public static INDArray pca(INDArray A, int nDims, boolean normalize) {
          INDArray factor = pca_factor(A, nDims, normalize);
          return A.mmul(factor);
      }
docs: Calculates pca vectors of a matrix, for a flags number of reduced features
  returns the reduced feature set
  The return is a projection of A onto principal nDims components
  
  To use the PCA: assume A is the original feature set
  then project A onto a reduced set of features. It is possible to
  reconstruct the original data ( losing information, but having the same
  dimensionality )
  
  <pre>
  {@code
  
  INDArray Areduced = A.mmul( factor ) ;
  INDArray Aoriginal = Areduced.mmul( factor.transpose() ) ;
  
  }
  </pre>
  
  @param A the array of features, rows are results, columns are features - will be changed
  @param nDims the number of components on which to project the features
  @param normalize whether to normalize (adjust each feature to have zero mean)
  @return the reduced parameters of A