import numpy.testing as npt import pytest import lifetimes.estimation as estimation import lifetimes.utils as utils from lifetimes.datasets import load_cdnow, load_summary_data_with_monetary_value, load_donations,\ load_transaction_data from lifetimes.generate_data import modified_beta_geometric_nbd_model @pytest.fixture def cdnow_customers(): return load_cdnow() cdnow_customers_with_monetary_value = load_summary_data_with_monetary_value() donations = load_donations() class TestBaseFitter(): def test_repr(self): base_fitter = estimation.BaseFitter() assert repr(base_fitter) == '<lifetimes.BaseFitter>' base_fitter.params_ = dict(x=12.3, y=42) base_fitter.data = np.array([1, 2, 3]) assert repr( base_fitter ) == '<lifetimes.BaseFitter: fitted with 3 subjects, x: 12.30, y: 42.00>' def test_unload_params(self): base_fitter = estimation.BaseFitter()
from __future__ import print_function import numpy as np import pandas as pd import numpy.testing as npt import lifetimes.estimation as estimation from lifetimes.datasets import load_cdnow, load_summary_data_with_monetary_value cdnow_customers = load_cdnow() cdnow_customers_with_monetary_value = load_summary_data_with_monetary_value() class TestGammaGammaFitter(): def test_params_out_is_close_to_Hardie_paper(self): ggf = estimation.GammaGammaFitter() ggf.fit( cdnow_customers_with_monetary_value['frequency'], cdnow_customers_with_monetary_value['monetary_value'], iterative_fitting=3 ) expected = np.array([6.25, 3.74, 15.44]) npt.assert_array_almost_equal(expected, np.array(ggf._unload_params('p', 'q', 'v')), decimal=2) class TestParetoNBDFitter(): def test_overflow_error(self): ptf = estimation.ParetoNBDFitter() params = np.array([10.465, 7.98565181e-03, 3.0516, 2.820])