public static HyperRectangleBuilder InitializeWithSeed(Dataset dataset, int seedIndex)
        {
            var builder      = new HyperRectangleBuilder(dataset);
            var seed         = dataset.GetInstanceData(seedIndex);
            var featureCount = dataset.FeatureCount;

            for (int i = 0; i < featureCount; i++)
            {
                switch (dataset.GetFeatureType(i))
                {
                case FeatureType.Continuous: {
                    builder.UpdateContinuousDimensionIntervalStart(
                        dimensionIndex: i,
                        value: seed[i]);

                    builder.UpdateContinuousDimensionIntervalEnd(
                        dimensionIndex: i,
                        value: seed[i]);

                    break;
                }

                default:
                    throw CommonExceptions.UnknownFeatureType;
                }
            }

            return(builder);
        }
        public static HyperRectangleBuilder InitializeWithLargestRectangle(Dataset dataset)
        {
            var builder      = new HyperRectangleBuilder(dataset);
            var featureCount = dataset.FeatureCount;

            for (int i = 0; i < featureCount; i++)
            {
                switch (dataset.GetFeatureType(i))
                {
                case FeatureType.Continuous:
                    builder._starts[i] = float.NegativeInfinity;
                    builder._ends[i]   = float.PositiveInfinity;
                    break;

                default:
                    throw CommonExceptions.UnknownFeatureType;
                }
            }

            return(builder);
        }