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)); }
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)); }
/// <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)); }