/// <summary> /// Determines whether the specified population is convergent. /// </summary> /// <param name="population">The population.</param> /// <returns> /// <c>true</c> if the specified population is convergent; otherwise, <c>false</c>. /// </returns> protected bool IsConvergent(Population population, Parameters parameters) { float avgEntropy = ShannonEntropy.GetGenesEntropy(population); float convergence = parameters.ConvergenceLimit; if (avgEntropy < convergence) { return(true); } return(false); }
public BestSplitSelectorsTests() { ICategoricalImpurityMeasure<string> shannonEntropy = new ShannonEntropy<string>(); IBinaryDataSplitter binaryDataSplitter = new BinaryDiscreteDataSplitter(); binaryNumericBestSplitPointSelector = new ClassBreakpointsNumericSplitFinder(); binaryBestSplitSelector = new BinarySplitSelectorForCategoricalOutcome(binaryDataSplitter, binaryNumericDataSplitter, binaryNumericBestSplitPointSelector); categoricalBinarySplitQualityChecker = new InformationGainCalculator<string>(shannonEntropy, shannonEntropy); categoricalMultiValueSplitQualityChecker = new InformationGainCalculator<string>(shannonEntropy, shannonEntropy); multiValueCategoricalDataSplitter = new MultiValueDiscreteDataSplitter(); multiValueBestSplitSelector = new MultiValueSplitSelectorForCategoricalOutcome(multiValueCategoricalDataSplitter, binaryNumericDataSplitter, binaryNumericBestSplitPointSelector); dynamicProgrammingBestNumericSplitFinder = new DynamicProgrammingNumericSplitFinder(); }
public BestSplitSelectorsTests() { ICategoricalImpurityMeasure <string> shannonEntropy = new ShannonEntropy <string>(); IBinaryDataSplitter binaryDataSplitter = new BinaryDiscreteDataSplitter(); binaryNumericBestSplitPointSelector = new ClassBreakpointsNumericSplitFinder(); binaryBestSplitSelector = new BinarySplitSelectorForCategoricalOutcome(binaryDataSplitter, binaryNumericDataSplitter, binaryNumericBestSplitPointSelector); categoricalBinarySplitQualityChecker = new InformationGainCalculator <string>(shannonEntropy, shannonEntropy); categoricalMultiValueSplitQualityChecker = new InformationGainCalculator <string>(shannonEntropy, shannonEntropy); multiValueCategoricalDataSplitter = new MultiValueDiscreteDataSplitter(); multiValueBestSplitSelector = new MultiValueSplitSelectorForCategoricalOutcome(multiValueCategoricalDataSplitter, binaryNumericDataSplitter, binaryNumericBestSplitPointSelector); dynamicProgrammingBestNumericSplitFinder = new DynamicProgrammingNumericSplitFinder(); }