docs: public double[] heldOutSetSigma(final GeneralDataset<L, F> trainSet, final GeneralDataset<L, F> devSet, final Scorer<L> scorer, LineSearcher minimizer) {
  
      featureIndex = trainSet.featureIndex;
      labelIndex = trainSet.labelIndex;
      //double[] resultWeights = null;
      Timing timer = new Timing();
  
      NegativeScorer negativeScorer = new NegativeScorer(trainSet,devSet,scorer,timer);
  
      timer.start();
      double bestSigma = minimizer.minimize(negativeScorer);
      System.err.println("##best sigma: " + bestSigma);
      setSigma(bestSigma);
  
      return ArrayUtils.flatten(trainWeights(trainSet,negativeScorer.weights,true)); // make sure it's actually the interim weights from best sigma
    }