public static CommonOutputs.AnomalyDetectionOutput CreateAnomalyPipelineEnsemble(IHostEnvironment env, PipelineAnomalyInput input) { Contracts.CheckValue(env, nameof(env)); var host = env.Register("CombineModels"); host.CheckValue(input, nameof(input)); host.CheckNonEmpty(input.Models, nameof(input.Models)); IRegressionOutputCombiner combiner; switch (input.ModelCombiner) { case ScoreCombiner.Median: combiner = new Median(host); break; case ScoreCombiner.Average: combiner = new Average(host); break; default: throw host.Except("Unknown combiner kind"); } var ensemble = SchemaBindablePipelineEnsembleBase.Create(host, input.Models, combiner, MetadataUtils.Const.ScoreColumnKind.AnomalyDetection); return(CreatePipelineEnsemble <CommonOutputs.AnomalyDetectionOutput>(host, input.Models, ensemble)); }
public static CommonOutputs.MulticlassClassificationOutput CreateMultiClassPipelineEnsemble(IHostEnvironment env, PipelineClassifierInput input) { Contracts.CheckValue(env, nameof(env)); var host = env.Register("CombineModels"); host.CheckValue(input, nameof(input)); host.CheckNonEmpty(input.Models, nameof(input.Models)); IOutputCombiner <VBuffer <Single> > combiner; switch (input.ModelCombiner) { case ClassifierCombiner.Median: combiner = new MultiMedian(host, new MultiMedian.Arguments() { Normalize = true }); break; case ClassifierCombiner.Average: combiner = new MultiAverage(host, new MultiAverage.Arguments() { Normalize = true }); break; case ClassifierCombiner.Vote: combiner = new MultiVoting(host); break; default: throw host.Except("Unknown combiner kind"); } var ensemble = SchemaBindablePipelineEnsembleBase.Create(host, input.Models, combiner, MetadataUtils.Const.ScoreColumnKind.MultiClassClassification); return(CreatePipelineEnsemble <CommonOutputs.MulticlassClassificationOutput>(host, input.Models, ensemble)); }
private static TOut CreatePipelineEnsemble <TOut>(IHostEnvironment env, IPredictorModel[] predictors, SchemaBindablePipelineEnsembleBase ensemble) where TOut : CommonOutputs.TrainerOutput, new() { var inputSchema = predictors[0].TransformModel.InputSchema; var dv = new EmptyDataView(env, inputSchema); // The role mappings are specific to the individual predictors. var rmd = new RoleMappedData(dv); var predictorModel = new PredictorModel(env, rmd, dv, ensemble); var output = new TOut { PredictorModel = predictorModel }; return(output); }