code: public DimReductionModelPrediction predictDimReduction(RowData data) throws PredictException {
      double[] preds = preamble(ModelCategory.DimReduction, data);  // preds contains the x factor
  
      DimReductionModelPrediction p = new DimReductionModelPrediction();
      p.dimensions = preds;
      if (m instanceof GlrmMojoModel && ((GlrmMojoModel) m)._archetypes_raw != null && this.enableGLRMReconstruct)  // only for verion 1.10 or higher
        p.reconstructed = ((GlrmMojoModel) m).impute_data(preds, new double[m.nfeatures()], ((GlrmMojoModel) m)._nnums,
                ((GlrmMojoModel) m)._ncats, ((GlrmMojoModel) m)._permutation, ((GlrmMojoModel) m)._reverse_transform,
                ((GlrmMojoModel) m)._normMul, ((GlrmMojoModel) m)._normSub, ((GlrmMojoModel) m)._losses,
                ((GlrmMojoModel) m)._transposed, ((GlrmMojoModel) m)._archetypes_raw, ((GlrmMojoModel) m)._catOffsets,
                ((GlrmMojoModel) m)._numLevels);
      return p;
    }
docs: Make a prediction on a new data point using a Dimension Reduction model (PCA, GLRM)
  @param data A new data point.
  @return The prediction.
  @throws PredictException