예제 #1
0
 def donations(self):
     return load_donations()
예제 #2
0
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()
        with pytest.raises(ValueError):
예제 #3
0
from __future__ import print_function

import numpy as np
import pandas as pd
import numpy.testing as npt

import lifetimes.estimation as estimation
import lifetimes.utils as utils
from lifetimes.datasets import load_cdnow, load_summary_data_with_monetary_value, load_donations

cdnow_customers = load_cdnow()
cdnow_customers_with_monetary_value = load_summary_data_with_monetary_value()
donations = load_donations()

class TestBetaGeoBetaBinomFitter():

    def test_params_out_is_close_to_Hardie_paper(self):

        bbtf = estimation.BetaGeoBetaBinomFitter()
        bbtf.fit(
            donations['frequency'],
            donations['recency'],
            donations['n'],
            donations['n_custs'],
        )
        expected = np.array([1.204, 0.750, 0.657, 2.783])
        npt.assert_array_almost_equal(expected, np.array(bbtf._unload_params('alpha','beta','gamma','delta')),
                                      decimal=2)

    def test_prob_alive_is_close_to_Hardie_paper_table_6(self):
        """Table 6: P(Alive in 2002) as a Function of Recency and Frequency"""