public SchemaBindableQuantileRegressionPredictor(IPredictor predictor, Double[] quantiles)
            : base(predictor)
        {
            var qpred = Predictor as IQuantileValueMapper;

            Contracts.CheckParam(qpred != null, nameof(predictor), "Predictor doesn't implement " + nameof(IQuantileValueMapper));
            _qpred = qpred;
            Contracts.CheckParam(ScoreType == NumberType.Float, nameof(predictor), "Unexpected predictor output type");
            Contracts.CheckParam(ValueMapper != null && ValueMapper.InputType.IsVector &&
                                 ValueMapper.InputType.ItemType == NumberType.Float,
                                 nameof(predictor), "Unexpected predictor input type");
            Contracts.CheckNonEmpty(quantiles, nameof(quantiles), "Quantiles must not be empty");
            _quantiles = quantiles;
        }
        private SchemaBindableQuantileRegressionPredictor(IHostEnvironment env, ModelLoadContext ctx)
            : base(env, ctx)
        {
            // *** Binary format ***
            // <base info>
            // int: the number of quantiles
            // Double[]: the quantiles

            var qpred = Predictor as IQuantileValueMapper;

            Contracts.CheckDecode(qpred != null);
            _qpred = qpred;
            Contracts.CheckDecode(ScoreType == NumberType.Float);
            Contracts.CheckDecode(ValueMapper != null && ValueMapper.InputType.IsVector &&
                                  ValueMapper.InputType.ItemType == NumberType.Float);
            _quantiles = ctx.Reader.ReadDoubleArray();
            Contracts.CheckDecode(Utils.Size(_quantiles) > 0);
        }