示例#1
0
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()
示例#2
0
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])