Exemple #1
0
        /// <summary>
        /// Calculates segmented conditional impurity of y | x When stipulating segments (s), X is broken
        /// up into s many segments therefore P(X=x_s) becomes a range probability rather than a fixed
        /// probability. In essence the average over H(Y|X = x) becomes SUM_s [ p_s * H(Y|X = x_s) ]. The
        /// values that were used to do the split are stored in the Splits member.
        /// </summary>
        /// <exception cref="InvalidOperationException">Thrown when the requested operation is invalid.</exception>
        /// <param name="y">Target impurity.</param>
        /// <param name="x">Conditioned impurity.</param>
        /// <param name="segments">Number of segments over x to condition upon.</param>
        /// <returns>Segmented conditional impurity measure.</returns>
        public double SegmentedConditional(Vector y, Vector x, int segments)
        {
            if (x == null && y == null)
                throw new InvalidOperationException("x and y do not exist!");

            return SegmentedConditional(y, x, x.Segment(segments));
        }