TVectorPredictor Train(RoleMappedData data)
        {
            Contracts.CheckValue(data, "data");
            data.CheckFeatureFloatVector();

            int count;

            data.CheckMulticlassLabel(out count);

            using (var ch = Host.Start("Training"))
            {
                // Train one-vs-all models.
                _predictors = new TVectorPredictor[1];
                for (int i = 0; i < _predictors.Length; i++)
                {
                    ch.Info("Training learner {0}", i);
                    Contracts.CheckValue(_args.predictorType, "predictorType", "Must specify a base learner type");

                    TScalarTrainer trainer;
                    if (_trainer != null)
                    {
                        trainer = _trainer;
                    }
                    else
                    {
                        var temp = ScikitSubComponent <ITrainer, SignatureBinaryClassifierTrainer> .AsSubComponent(_args.predictorType);

                        var inst = temp.CreateInstance(Host);
                        trainer = inst as TScalarTrainer;
                        if (trainer == null)
                        {
                            var allTypes    = TrainerHelper.GetParentTypes(inst.GetType()).ToArray();
                            var allTypesStr = string.Join("\n", allTypes.Select(c => c.ToString()));
                            throw ch.ExceptNotSupp($"Unable to cast {inst.GetType()} into {typeof(TScalarTrainer)}.\n-TYPES-\n{allTypesStr}");
                        }
                    }

                    _trainer       = null;
                    _predictors[i] = TrainPredictor(ch, trainer, data, count);
                }
            }

            return(CreatePredictor());
        }
        protected override TVectorPredictor Train(TrainContext context)
        {
            var data = context.TrainingSet;

            Contracts.CheckValue(data, "data");
            data.CheckFeatureFloatVector();

            int count;

            data.CheckMulticlassLabel(out count);

            using (var ch = Host.Start("Training"))
            {
                // Train one-vs-all models.
                _predictors = new TVectorPredictor[1];
                for (int i = 0; i < _predictors.Length; i++)
                {
                    ch.Info("Training learner {0}", i);
                    Contracts.CheckValue(_args.predictorType, "predictorType", "Must specify a base learner type");
                    TScalarTrainer trainer;
                    if (_trainer != null)
                    {
                        trainer = _trainer;
                    }
                    else
                    {
                        var trSett = ScikitSubComponent <ITrainer, SignatureTrainer> .AsSubComponent(_args.predictorType);

                        var tr = trSett.CreateInstance(Host);
                        trainer = tr as TScalarTrainer;
                        Contracts.AssertValue(trainer);
                    }
                    _trainer       = null;
                    _predictors[i] = TrainPredictor(ch, trainer, data, count);
                }
            }

            return(CreatePredictor());
        }
Ejemplo n.º 3
0
        TVectorPredictor Train(RoleMappedData data)
        {
            Contracts.CheckValue(data, "data");
            data.CheckFeatureFloatVector();

            int count;

            data.CheckMultiClassLabel(out count);

            using (var ch = Host.Start("Training"))
            {
                // Train one-vs-all models.
                _predictors = new TVectorPredictor[1];
                for (int i = 0; i < _predictors.Length; i++)
                {
                    ch.Info("Training learner {0}", i);
                    Contracts.CheckValue(_args.predictorType, "predictorType", "Must specify a base learner type");

                    TScalarTrainer trainer;
                    if (_trainer != null)
                    {
                        trainer = _trainer;
                    }
                    else
                    {
                        var temp = ScikitSubComponent <ITrainer, SignatureBinaryClassifierTrainer> .AsSubComponent(_args.predictorType);

                        trainer = temp.CreateInstance(Host) as TScalarTrainer;
                    }

                    _trainer       = null;
                    _predictors[i] = TrainPredictor(ch, trainer, data, count);
                }
            }

            return(CreatePredictor());
        }