Пример #1
0
        protected void TrainReclassificationPredictor(RoleMappedData trainer_input, IPredictor predictor,
                                                      ISubComponent <ITrainer> argsPred)
        {
            if (argsPred == null)
            {
                _reclassPredictor = null;
                return;
            }

            using (var ch = Host.Start("Training reclassification predictor"))
            {
                ch.Info("Training reclassification learner");
                Contracts.CheckUserArg(argsPred.IsGood(), "reclassificationPredictor", "Must specify a base learner type");
                var trainer = argsPred.CreateInstance(Host);

                var args = new PredictTransform.Arguments
                {
                    featureColumn = trainer_input.Schema.Feature.Value.Name,
                    outputColumn  = DataViewUtils.GetTempColumnName(trainer_input.Data.Schema)
                };

                var data  = new PredictTransform(Host, args, trainer_input.Data, predictor);
                var roles = new[] { RoleMappedSchema.ColumnRole.Feature.Bind(args.outputColumn),
                                    RoleMappedSchema.ColumnRole.Label.Bind(trainer_input.Schema.Label.Value.Name) };
                var data_roles   = new RoleMappedData(data, roles);
                var trainerRoles = trainer as ITrainer <TVectorPredictor>;
                if (trainerRoles == null)
                {
                    throw Host.Except("Trainer reclassification cannot be trained.");
                }
                _reclassPredictor = trainerRoles.Train(data_roles);
            }
        }
Пример #2
0
        protected override IDataTransform Create(IHostEnvironment env, PredictTransform.Arguments args_, IDataView input, out IDataView sourceCtx, IPredictor overwritePredictor)
        {
            Contracts.CheckValue(env, "env");
            env.CheckValue(args_, "args_");
            var args = args_ as Arguments;

            env.CheckValue(args, "args");
            env.CheckValue(input, "input");

            IPredictor predictor;

            if (overwritePredictor == null)
            {
                env.CheckUserArg(!string.IsNullOrWhiteSpace(args.taggedPredictor), "taggedPredictor",
                                 "The input tag is required.");
                predictor = TagHelper.GetTaggedPredictor(env, input, args.taggedPredictor);
            }
            else
            {
                predictor = overwritePredictor;
            }

            return(base.Create(env, args, input, out sourceCtx, predictor));
        }