Пример #1
0
        public TrainingExample[] OverSample(TrainingExample[] trainingExamples, SamplingParams samplingParams)
        {
            if (!samplingParams.NeedSampling)
                return trainingExamples;

            var trainingSet = new TrainingSet(trainingExamples);
            var delta = Math.Min(trainingSet.Majority.Length - trainingSet.Minority.Length, trainingSet.Minority.Length * samplingParams.MinorityClassMaxOversampling);
            var additionalSamples = Enumerable.Range(0, delta).Select(x => OverSample(trainingSet, samplingParams)).ToArray();
            return trainingExamples.Concat(additionalSamples).RandomShuffle().ToArray();
        }
Пример #2
0
 private TrainingExample OverSample(TrainingSet trainingSet, SamplingParams samplingParams)
 {
     switch (samplingParams.Strategy)
     {
         case SamplingStrategy.Random:
             return OverSampleRandomly(trainingSet);
         case SamplingStrategy.Generative:
             return OverSampleGeneratively(trainingSet);
         case SamplingStrategy.Perturbed:
             return OverSamplePerturbed(trainingSet);
         default:
             throw new InvalidOperationException(string.Format("No implementation for strategy {0}", samplingParams.Strategy));
     }
 }