internal SdcaRegressionTrainer(IHostEnvironment env, Arguments args, string featureColumn, string labelColumn, string weightColumn = null)
            : base(env, args, TrainerUtils.MakeR4ScalarLabel(labelColumn), TrainerUtils.MakeR4ScalarWeightColumn(weightColumn))
        {
            Host.CheckValue(labelColumn, nameof(labelColumn));
            Host.CheckValue(featureColumn, nameof(featureColumn));

            _loss = args.LossFunction.CreateComponent(env);
            Loss  = _loss;
        }
 /// <summary>
 /// Initializes a new instance of <see cref="PoissonRegression"/>
 /// </summary>
 /// <param name="env">The environment to use.</param>
 /// <param name="labelColumn">The name of the label column.</param>
 /// <param name="featureColumn">The name of the feature column.</param>
 /// <param name="weightColumn">The name for the example weight column.</param>
 /// <param name="enforceNoNegativity">Enforce non-negative weights.</param>
 /// <param name="l1Weight">Weight of L1 regularizer term.</param>
 /// <param name="l2Weight">Weight of L2 regularizer term.</param>
 /// <param name="memorySize">Memory size for <see cref="LogisticRegression"/>. Lower=faster, less accurate.</param>
 /// <param name="optimizationTolerance">Threshold for optimizer convergence.</param>
 /// <param name="advancedSettings">A delegate to apply all the advanced arguments to the algorithm.</param>
 public PoissonRegression(IHostEnvironment env, string featureColumn, string labelColumn,
                          string weightColumn                 = null,
                          float l1Weight                      = Arguments.Defaults.L1Weight,
                          float l2Weight                      = Arguments.Defaults.L2Weight,
                          float optimizationTolerance         = Arguments.Defaults.OptTol,
                          int memorySize                      = Arguments.Defaults.MemorySize,
                          bool enforceNoNegativity            = Arguments.Defaults.EnforceNonNegativity,
                          Action <Arguments> advancedSettings = null)
     : base(env, featureColumn, TrainerUtils.MakeR4ScalarLabel(labelColumn), weightColumn, advancedSettings,
            l1Weight, l2Weight, optimizationTolerance, memorySize, enforceNoNegativity)
 {
     Host.CheckNonEmpty(featureColumn, nameof(featureColumn));
     Host.CheckNonEmpty(labelColumn, nameof(labelColumn));
 }
 /// <summary>
 /// Initializes a new instance of <see cref="SdcaRegressionTrainer"/>
 /// </summary>
 /// <param name="env">The environment to use.</param>
 /// <param name="labelColumn">The label, or dependent variable.</param>
 /// <param name="featureColumn">The features, or independent variables.</param>
 /// <param name="weights">The optional example weights.</param>
 /// <param name="loss">The custom loss.</param>
 /// <param name="l2Const">The L2 regularization hyperparameter.</param>
 /// <param name="l1Threshold">The L1 regularization hyperparameter. Higher values will tend to lead to more sparse model.</param>
 /// <param name="maxIterations">The maximum number of passes to perform over the data.</param>
 /// <param name="advancedSettings">A delegate to set more settings.
 /// The settings here will override the ones provided in the direct method signature,
 /// if both are present and have different values.
 /// The columns names, however need to be provided directly, not through the <paramref name="advancedSettings"/>.</param>
 public SdcaRegressionTrainer(IHostEnvironment env,
                              string labelColumn              = DefaultColumnNames.Label,
                              string featureColumn            = DefaultColumnNames.Features,
                              string weights                  = null,
                              ISupportSdcaRegressionLoss loss = null,
                              float?l2Const     = null,
                              float?l1Threshold = null,
                              int?maxIterations = null,
                              Action <Arguments> advancedSettings = null)
     : base(env, featureColumn, TrainerUtils.MakeR4ScalarLabel(labelColumn), TrainerUtils.MakeR4ScalarWeightColumn(weights), advancedSettings,
            l2Const, l1Threshold, maxIterations)
 {
     Host.CheckNonEmpty(featureColumn, nameof(featureColumn));
     Host.CheckNonEmpty(labelColumn, nameof(labelColumn));
     _loss = loss ?? Args.LossFunction.CreateComponent(env);
     Loss  = _loss;
 }
 /// <summary>
 /// Initializes a new instance of <see cref="PoissonRegression"/>
 /// </summary>
 internal PoissonRegression(IHostEnvironment env, Arguments args)
     : base(env, args, TrainerUtils.MakeR4ScalarLabel(args.LabelColumn))
 {
 }