示例#1
0
 protected override PkpdPredictor TrainCore(IChannel ch, RoleMappedData data, int count)
 {
     // Train M * (M+1) / 2 models arranged as a lower triangular matrix.
     TDistPredictor[][] predictors;
     predictors = new TDistPredictor[count][];
     for (int i = 0; i < predictors.Length; i++)
     {
         predictors[i] = new TDistPredictor[i + 1];
         for (int j = 0; j <= i; j++)
         {
             ch.Info($"Training learner ({i},{j})");
             predictors[i][j] = TrainOne(ch, GetTrainer(), data, i, j);
         }
     }
     return(new PkpdPredictor(Host, predictors));
 }
示例#2
0
        private protected override PairwiseCouplingModelParameters TrainCore(IChannel ch, RoleMappedData data, int count)
        {
            // Train M * (M+1) / 2 models arranged as a lower triangular matrix.
            var predModels = new TDistPredictor[count][];

            for (int i = 0; i < predModels.Length; i++)
            {
                predModels[i] = new TDistPredictor[i + 1];

                for (int j = 0; j <= i; j++)
                {
                    ch.Info($"Training learner ({i},{j})");
                    predModels[i][j] = TrainOne(ch, Trainer, data, i, j).Model;
                }
            }

            return(new PairwiseCouplingModelParameters(Host, predModels));
        }
示例#3
0
        /// <summary>
        /// Fits the data to the transformer
        /// </summary>
        /// <param name="input">The input data.</param>
        /// <returns>The trained predictor.</returns>
        public override TTransformer Fit(IDataView input)
        {
            string featureColumn = null;

            var roles = new KeyValuePair <CR, string> [1];

            roles[0] = new KeyValuePair <CR, string>(new CR(DefaultColumnNames.Label), LabelColumn.Name);
            var td = new RoleMappedData(input, roles);

            td.CheckMultiClassLabel(out var numClasses);
            // Train M * (M+1) / 2 models arranged as a lower triangular matrix.
            var predictors = new TDistPredictor[numClasses][];

            using (var ch = Host.Start("Fitting"))
            {
                for (int i = 0; i < predictors.Length; i++)
                {
                    predictors[i] = new TDistPredictor[i + 1];

                    for (int j = 0; j <= i; j++)
                    {
                        ch.Info($"Training learner ({i},{j})");

                        // need to capture the featureColum, and it is the same for all the transformers
                        if (i == 0 && j == 0)
                        {
                            var transformer = TrainOne(ch, Trainer, td, i, j);
                            featureColumn = transformer.FeatureColumn;
                        }

                        predictors[i][j] = TrainOne(ch, Trainer, td, i, j).Model;
                    }
                }
            }

            return(new MulticlassPredictionTransformer <PairwiseCouplingModelParameters>(Host, new PairwiseCouplingModelParameters(Host, predictors), input.Schema, featureColumn, LabelColumn.Name));
        }