コード例 #1
0
ファイル: NumericalBinTest.cs プロジェクト: Novacta/analytics
                /// <summary>
                /// Provides methods to test that the
                /// <see cref="NumericalBin.
                /// GetNumericalBins(DoubleMatrix, DoubleMatrix)"/>
                /// method fails when numerical and target data
                /// have different lengths.
                public static void NumericalAndTargetDataHaveDifferentLengths()
                {
                    var numericalData = DoubleMatrix.Dense(5, 1,
                                                           new double[5] {
                        -1, -1, -1, 1, 1
                    });
                    var targetData = DoubleMatrix.Dense(4, 1,
                                                        new double[4] {
                        20, 10, 10, 10
                    });

                    ArgumentExceptionAssert.Throw(
                        () =>
                    {
                        var bins = NumericalBin.GetNumericalBins(
                            numericalData,
                            targetData);
                    },
                        expectedType: typeof(ArgumentException),
                        expectedPartialMessage: string.Format(
                            ImplementationServices.GetResourceString(
                                "STR_EXCEPT_PAR_MUST_HAVE_SAME_COUNT"),
                            nameof(numericalData)),
                        expectedParameterName: "targetData");
                }
コード例 #2
0
        public void ToStringTest()
        {
            var numericalData = DoubleMatrix.Dense(5, 1,
                                                   new double[5] {
                -1, -1, -1, 1, 1
            });
            var targetData = DoubleMatrix.Dense(5, 1,
                                                new double[5] {
                10, 20, 10, 10, 10
            });
            var bins = NumericalBin.GetNumericalBins(numericalData, targetData);

            // Two bins expected
            string expected, actual;

            // bins[0]

            expected = "Values: [-1, -1]. Positions: [0, 2]. " +
                       "Target Distribution: [ " +
                       "(10, 2) " +
                       "(20, 1) ]";
            actual = bins[0].ToString();

            Assert.AreEqual(expected, actual);

            // bins[1]

            expected = "Values: [1, 1]. Positions: [3, 4]. " +
                       "Target Distribution: [ " +
                       "(10, 2) " +
                       "(20, 0) ]";
            actual = bins[1].ToString();

            Assert.AreEqual(expected, actual);
        }
コード例 #3
0
ファイル: NumericalBinTest.cs プロジェクト: Novacta/analytics
                /// Tests that the
                /// <see cref="NumericalBin.
                /// GetNumericalBins(DoubleMatrix, DoubleMatrix)"/>
                /// method terminates successfully as expected when
                /// its parameters are valid and a final cut point exists.
                /// </summary>
                public static void FinalCutPointExists()
                {
                    var numericalData = DoubleMatrix.Dense(5, 1,
                                                           new double[5] {
                        -1, -1, 1, 1, 2
                    });
                    var targetData = DoubleMatrix.Dense(5, 1,
                                                        new double[5] {
                        10, 20, 10, 10, 10
                    });
                    var bins = NumericalBin.GetNumericalBins(
                        numericalData,
                        targetData);

                    NumericalBinAssert.IsStateAsExpected(
                        target: bins[0],
                        expectedFirstPosition: 0,
                        expectedLastPosition: 1,
                        expectedFirstValue: -1,
                        expectedLastValue: -1,
                        expectedTargetFrequencyDistribution:
                        new Dictionary <double, int>(2)
                    {
                        { 10, 1 }, { 20, 1 }
                    });

                    NumericalBinAssert.IsStateAsExpected(
                        target: bins[1],
                        expectedFirstPosition: 2,
                        expectedLastPosition: 3,
                        expectedFirstValue: 1,
                        expectedLastValue: 1,
                        expectedTargetFrequencyDistribution:
                        new Dictionary <double, int>(1)
                    {
                        { 10, 2 }, { 20, 0 }
                    });

                    NumericalBinAssert.IsStateAsExpected(
                        target: bins[2],
                        expectedFirstPosition: 4,
                        expectedLastPosition: 4,
                        expectedFirstValue: 2,
                        expectedLastValue: 2,
                        expectedTargetFrequencyDistribution:
                        new Dictionary <double, int>(1)
                    {
                        { 10, 1 }, { 20, 0 }
                    });
                }
コード例 #4
0
ファイル: NumericalBinTest.cs プロジェクト: Novacta/analytics
                /// <summary>
                /// Provides methods to test that the
                /// <see cref="NumericalBin.
                /// GetNumericalBins(DoubleMatrix, DoubleMatrix)"/>
                /// method fails when the numerical data is <b>null</b>.
                public static void NumericalDataIsNull()
                {
                    DoubleMatrix numericalData = null;
                    var          targetData    = DoubleMatrix.Dense(5, 1,
                                                                    new double[5] {
                        10, 20, 10, 10, 10
                    });

                    ArgumentExceptionAssert.Throw(
                        () =>
                    {
                        var bins = NumericalBin.GetNumericalBins(
                            numericalData,
                            targetData);
                    },
                        expectedType: typeof(ArgumentNullException),
                        expectedPartialMessage: ArgumentExceptionAssert.NullPartialMessage,
                        expectedParameterName: "numericalData");
                }
コード例 #5
0
ファイル: NumericalBinTest.cs プロジェクト: Novacta/analytics
                /// Tests that the
                /// <see cref="NumericalBin.
                /// GetNumericalBins(DoubleMatrix, DoubleMatrix)"/>
                /// method terminates successfully as expected when
                /// its parameters are valid and the data length is 1.
                /// </summary>
                public static void DataLengthIsOne()
                {
                    var numericalData = DoubleMatrix.Dense(1, 1, -1);
                    var targetData    = DoubleMatrix.Dense(1, 1, 10);
                    var bins          = NumericalBin.GetNumericalBins(
                        numericalData,
                        targetData);

                    NumericalBinAssert.IsStateAsExpected(
                        target: bins[0],
                        expectedFirstPosition: 0,
                        expectedLastPosition: 0,
                        expectedFirstValue: -1,
                        expectedLastValue: -1,
                        expectedTargetFrequencyDistribution:
                        new Dictionary <double, int>(1)
                    {
                        { 10, 1 }
                    });
                }
コード例 #6
0
        /// <summary>
        /// Determines whether the specified target has the expected state.
        /// </summary>
        /// <param name="target">The target.</param>
        /// <param name="expectedFirstPosition">The expected first position.</param>
        /// <param name="expectedLastPosition">The expected last position.</param>
        /// <param name="expectedFirstValue">The expected first value.</param>
        /// <param name="expectedLastValue">The expected last value.</param>
        /// <param name="expectedTargetFrequencyDistribution">
        /// The expected target frequency distribution.</param>
        /// <exception cref="AssertFailedException">
        /// Actual target value is not in the expected frequency distribution.
        /// </exception>
        public static void IsStateAsExpected(
            NumericalBin target,
            int expectedFirstPosition,
            int expectedLastPosition,
            double expectedFirstValue,
            double expectedLastValue,
            Dictionary <double, int> expectedTargetFrequencyDistribution)
        {
            var actualFirstPosition =
                (int)Reflector.GetBaseField(target, "firstPosition");
            var actualLastPosition =
                (int)Reflector.GetBaseField(target, "lastPosition");
            var actualFirstValue =
                (double)Reflector.GetBaseField(target, "firstValue");
            var actualLastValue =
                (double)Reflector.GetBaseField(target, "lastValue");
            var actualTargetFrequencyDistribution =
                (Dictionary <double, int>)Reflector.GetBaseField(
                    target, "targetFrequencyDistribution");

            Assert.AreEqual(expectedFirstPosition, actualFirstPosition);
            Assert.AreEqual(expectedLastPosition, actualLastPosition);

            Assert.AreEqual(expectedFirstValue, actualFirstValue);
            Assert.AreEqual(expectedLastValue, actualLastValue);

            foreach (var pair in actualTargetFrequencyDistribution)
            {
                if (!expectedTargetFrequencyDistribution.TryGetValue(
                        pair.Key, out int expectedFrequency))
                {
                    throw new AssertFailedException(
                              "Actual target value is not in the expected " +
                              "frequency distribution.");
                }
                else
                {
                    Assert.AreEqual(expectedFrequency, pair.Value);
                }
            }
        }