code: public AbstractPrediction predict(RowData data, ModelCategory mc) throws PredictException {
      switch (mc) {
        case AutoEncoder:
          return predictAutoEncoder(data);
        case Binomial:
          return predictBinomial(data);
        case Multinomial:
          return predictMultinomial(data);
        case Ordinal:
          return predictOrdinal(data);
        case Clustering:
          return predictClustering(data);
        case Regression:
          return predictRegression(data);
        case DimReduction:
          return predictDimReduction(data);
        case WordEmbedding:
          return predictWord2Vec(data);
        case AnomalyDetection:
          return predictAnomalyDetection(data);
  
        case Unknown:
          throw new PredictException("Unknown model category");
        default:
          throw new PredictException("Unhandled model category (" + m.getModelCategory() + ") in switch statement");
      }
    }
docs: Make a prediction on a new data point.
  
  The type of prediction returned depends on the model type.
  The caller needs to know what type of prediction to expect.
  
  This call is convenient for generically automating model deployment.
  For specific applications (where the kind of model is known and doesn't change), it is recommended to call
  specific prediction calls like predictBinomial() directly.
  
  @param data A new data point.
  @return The prediction.
  @throws PredictException