Beispiel #1
0
    def test_fit_not_contant(self, select_mock):
        """if not constant call select_univariate and fit the returned instance.

        Check that candidates are passed down to select_univariate
        and that the returned instance is fitted on the input data.
        """
        # Setup
        candidate = MagicMock()
        candidates = [candidate]
        distribution = Univariate(candidates)

        # Run
        data = np.array([1, 2, 3, 4, 5])
        distribution.fit(data)

        # Assert
        assert distribution.fitted
        assert distribution.constant_value is None

        # candidates are passed down
        assert select_mock.call_count == 1
        expected_call = call(data, candidates)[1:]
        actual_call = select_mock.call_args
        compare_nested_iterables(expected_call, actual_call)

        # the returned instance is fitted
        instance = select_mock.return_value
        assert instance.fit.call_count == 1
        expected_call = call(data)[1:]
        actual_call = instance.fit.call_args
        compare_nested_iterables(expected_call, actual_call)
Beispiel #2
0
    def test_fit_not_constant(self):
        """if constant values, replace methods."""
        # Setup
        distribution = Univariate()

        # Run
        distribution.fit(np.array([1, 2, 3, 4, 1]))

        # Assert
        assert distribution.fitted
        assert not distribution._instance._is_constant()
Beispiel #3
0
    def fit(self, data, cols):
        """Fits univariate distributions (automatically selected).

        Args:
            data (DataFrame):
                Data, where each column in `cols` is a continuous column.
            cols (list[str]):
                Column names.
        """
        for col in cols:
            col_data = np.array(data[col])
            dist_model = Univariate()
            dist_model.fit(col_data)
            self.cdfs.append(dist_model)
Beispiel #4
0
    def test_fit_contant(self):
        """if constant values, replace methods."""
        # Setup
        distribution = Univariate()
        replace_mock = MagicMock()
        distribution._replace_constant_methods = replace_mock

        # Run
        distribution.fit(np.array([1, 1, 1, 1, 1]))

        # Assert
        assert distribution.fitted
        assert distribution.constant_value == 1
        replace_mock.assert_called_once_with()
Beispiel #5
0
    def test_fit_selection_sample_size_small(self, select_mock):
        """if selection_sample_size is smaller than data, subsample the data before selecting."""
        # Setup
        distribution = Univariate(selection_sample_size=3)

        # Run
        distribution.fit(np.array([1, 1, 1, 1, 1]))

        # Assert
        assert distribution.fitted
        assert distribution._instance == select_mock.return_value

        call_args = select_mock.call_args_list
        selection_sample = call_args[0][0][0]
        np.testing.assert_array_equal(selection_sample, np.array([1, 1, 1]))

        fit_call_args = select_mock.return_value.fit.call_args_list
        np.testing.assert_array_equal(fit_call_args[0][0][0],
                                      np.array([1, 1, 1, 1, 1]))
Beispiel #6
0
 def fit(self, data, cols):
     for col in cols:
         col_data = np.array(data[col])
         dist_model = Univariate()
         dist_model.fit(col_data)
         self.cdfs.append(dist_model)