public CategoricalTransform(ValueToKeyMappingEstimator term, IEstimator <ITransformer> toVector, IDataView input)
 {
     if (toVector != null)
     {
         _transformer = term.Append(toVector).Fit(input);
     }
     else
     {
         _transformer = new TransformerChain <ITransformer>(term.Fit(input));
     }
 }
        private void buildAndTrainModel(IDataView data)
        {
            _answerKeyEstimator = _mlContext.Transforms.Conversion.MapValueToKey(
                inputColumnName: nameof(MLEntry.Text),
                outputColumnName: "Label");

            var trainingPipeline =
                _answerKeyEstimator
                .Append(_mlContext.Transforms.Text.FeaturizeText(inputColumnName: nameof(MLEntry.Text),
                                                                 outputColumnName: "TextFeaturized"))
                .Append(_mlContext.Transforms.Text.FeaturizeText(inputColumnName: nameof(MLEntry.Intent),
                                                                 outputColumnName: "IntentFeaturized"))
                .Append(_mlContext.Transforms.Text.FeaturizeText(inputColumnName: nameof(MLEntry.PreviousIntents),
                                                                 outputColumnName: "PreviousIntentFeaturized"))
                .Append(_mlContext.Transforms.Concatenate("Featurized", "TextFeaturized", "IntentFeaturized", "PreviousIntentFeaturized"))
                .AppendCacheCheckpoint(_mlContext)
                .Append(_mlContext.MulticlassClassification.Trainers.SdcaMaximumEntropy("Label", "QuestionFeaturized"))
                .Append(_mlContext.Transforms.Conversion.MapKeyToValue("PredictedLabel"));

            _trainedModel     = trainingPipeline.Fit(data);
            _predictionEngine = _mlContext.Model.CreatePredictionEngine <MLEntry, IntentPrediction>(_trainedModel);
        }
 public SchemaShape GetOutputSchema(SchemaShape inputSchema) => _term.Append(_toSomething).GetOutputSchema(inputSchema);