docs: protected float[] score0( Chunk chks[], int row_in_chunk, double[] tmp, float[] preds ) {
      assert chks.length>=_names.length; // Last chunk is for the response
      for( int i=0; i<nfeatures(); i++ ) // Do not include last value since it can contains a response
        tmp[i] = chks[i].at0(row_in_chunk);
      float[] scored = score0(tmp,preds);
      // Correct probabilities obtained from training on oversampled data back to original distribution
      // C.f. http://gking.harvard.edu/files/0s.pdf Eq.(27)
      if (isClassifier() && _priorClassDist != null && _modelClassDist != null) {
        assert(scored.length == nclasses()+1); //1 label + nclasses probs
        ModelUtils.correctProbabilities(scored, _priorClassDist, _modelClassDist);
        //set label based on corrected probabilities (max value wins, with deterministic tie-breaking)
        scored[0] = ModelUtils.getPrediction(scored, tmp);
      }
      return scored;
    }