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)
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()
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)
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()
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]))
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)