def cdnow_customers(): return load_cdnow()
import os import pandas as pd import pytest import matplotlib matplotlib.use('AGG') # use a non-interactive backend from matplotlib import pyplot as plt from lifetimes import plotting from lifetimes import BetaGeoFitter, ParetoNBDFitter, ModifiedBetaGeoFitter from lifetimes.datasets import load_cdnow, load_transaction_data from lifetimes import utils bgf = BetaGeoFitter() cd_data = load_cdnow() bgf.fit(cd_data['frequency'], cd_data['recency'], cd_data['T'], iterative_fitting=1) @pytest.mark.plottest class TestPlotting(): @pytest.mark.mpl_image_compare(tolerance=30) def test_plot_period_transactions(self): plt.figure() plotting.plot_period_transactions(bgf) return plt.gcf() @pytest.mark.mpl_image_compare(tolerance=30) def test_plot_period_transactions_parento(self):
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])
import os import pandas as pd import pytest import matplotlib matplotlib.use('AGG') # use a non-interactive backend from matplotlib import pyplot as plt from lifetimes import plotting from lifetimes import BetaGeoFitter, ParetoNBDFitter, ModifiedBetaGeoFitter from lifetimes.datasets import load_cdnow, load_transaction_data from lifetimes import utils bgf = BetaGeoFitter() cd_data = load_cdnow() bgf.fit(cd_data['frequency'], cd_data['recency'], cd_data['T'], iterative_fitting=1) @pytest.mark.plottest class TestPlotting(): @pytest.mark.mpl_image_compare(tolerance=30) def test_plot_period_transactions(self): plt.figure() plotting.plot_period_transactions(bgf) return plt.gcf() @pytest.mark.mpl_image_compare(tolerance=30) def test_plot_period_transactions_parento(self): pnbd = ParetoNBDFitter() pnbd.fit(cd_data['frequency'], cd_data['recency'], cd_data['T'], iterative_fitting=1)
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"""
''' Created on 22 oct. 2015 @author: mrousseau - toto ''' from lifetimes.datasets import load_cdnow from lifetimes.estimation import BetaGeoFitter, GammaGammaFitter, ParetoNBDFitter data = load_cdnow(index_col=[0]) print data.head() print type(data) from scikits.recommenders.knn import UserBasedRecommender bgf = ParetoNBDFitter(penalizer_coef=0.0) bgf.fit(data['frequency'], data['recency'], data['T']) print bgf print bgf.conditional_expected_number_of_purchases_up_to_time(1,2,45,90) print bgf.conditional_probability_alive(2,45,90) from lifetimes.plotting import plot_frequency_recency_matrix plot_frequency_recency_matrix(bgf) #from matplotlib import pyplot as plt #plt.show() #from lifetimes.plotting import plot_probability_alive_matrix #plot_probability_alive_matrix(bgf) #plt.show() t = 1