public ClassifierBuildResult Build(TextDocument[] trainingSet, ClassifierParams classifierParams)
        {
            var targetTag = classifierParams.TargetTag;
            var featuredWords = featureSelector.Select(trainingSet, classifierParams.FeatureSelectionParams).FeaturedWords.Select(x => x.Word).ToArray();
            var trainingExamples = trainingSet.Select(textDocument => textDocumentConverter.ConvertToTrainingExample(textDocument, targetTag, featuredWords)).ToArray();
            var oversampledExamples = sampler.OverSample(trainingExamples, classifierParams.SamplingParams);
            var algorithmBuildResult = classificationAlgorithmBuilder.Build(oversampledExamples, classifierParams.ClassificationAlgorithmParams);
            var result = new SimpleClassifier(algorithmBuildResult.ClassificationAlgorithm, textDocumentConverter, targetTag, featuredWords);

            return ClassifierBuildResult.Create(result, algorithmBuildResult.Error);
        }
        private WeightedClassifier Build(TextDocument[] trainingSet, BaggingParams baggingParams, ClassifierParams classifierParams)
        {
            var underSampledSet = baggingParams.NeedUnderSampling
                ? trainingSet.RandomShuffle().Take(trainingSet.Length*85/100).ToArray()
                : trainingSet;

            return new WeightedClassifier
            {
                Classifier = classifierBuilder.Build(underSampledSet, classifierParams).Classifier,
                Weight = 1.0
            };
        }
 public ClassifierBuildResult Build(TextDocument[] trainingSet, ClassifierParams classifierParams)
 {
     return builders.First(x => x.Type == classifierParams.Type).Build(trainingSet, classifierParams);
 }