Exemplo n.º 1
0
def relationBetweenPurchaseValueFrequency():

    #gamma gamma model has an assumption that there is no relationship between purchase value and the frequency.
    #let find out the correlation between them.
    summaryDataFromTransactionDataForCLV = readsummaryDataFromTransactionDataForCLV(
    )

    print(summaryDataFromTransactionDataForCLV[["monetary_value",
                                                "frequency"]].corr())
Exemplo n.º 2
0
def conditionalExpectedAverageProfit():

    gammaGammaFitterModel = readGammaGammaFitterModel()

    summaryDataFromTransactionDataForCLV = readsummaryDataFromTransactionDataForCLV(
    )

    summaryDataFromTransactionDataForCLV["pred_txn_value"] = round(
        gammaGammaFitterModel.conditional_expected_average_profit(
            summaryDataFromTransactionDataForCLV["frequency"],
            summaryDataFromTransactionDataForCLV["monetary_value"]), 2)

    print(summaryDataFromTransactionDataForCLV.head(10))
Exemplo n.º 3
0
def trainGammaGammaModel():

    summaryDataFromTransactionDataForCLV = readsummaryDataFromTransactionDataForCLV(
    )

    #getting those customers who have done at least one transaction with the company
    shortlistedCustomers = summaryDataFromTransactionDataForCLV[
        summaryDataFromTransactionDataForCLV["frequency"] > 0]

    gammaGammaFitterModel = GammaGammaFitter(penalizer_coef=0.0)

    gammaGammaFitterModel.fit(shortlistedCustomers["frequency"],
                              shortlistedCustomers["monetary_value"])

    saveGammaGammaFitterModel(gammaGammaFitterModel)
Exemplo n.º 4
0
def trainBetaGeoFitterModel():

    summaryDataFromTransactionDataForCLV = readsummaryDataFromTransactionDataForCLV(
    )

    #training model
    betaGeoFitterModel = BetaGeoFitter(penalizer_coef=0.0)

    betaGeoFitterModel.fit(summaryDataFromTransactionDataForCLV["frequency"],
                           summaryDataFromTransactionDataForCLV["recency"],
                           summaryDataFromTransactionDataForCLV["T"])

    #saving the model in pickle file
    saveBetaGeoFitterModel(betaGeoFitterModel)

    print(betaGeoFitterModel.summary)
Exemplo n.º 5
0
def customerLifeTimeValue():

    gammaGammaFitterModel = readGammaGammaFitterModel()

    betaGeoFitterModel = readBetaGeoFitterModel()

    summaryDataFromTransactionDataForCLV = readsummaryDataFromTransactionDataForCLV(
    )

    #calculate customerlife time value
    summaryDataFromTransactionDataForCLV["CLV"] = round(
        gammaGammaFitterModel.customer_lifetime_value(
            betaGeoFitterModel,
            summaryDataFromTransactionDataForCLV["frequency"],
            summaryDataFromTransactionDataForCLV["recency"],
            summaryDataFromTransactionDataForCLV["T"],
            summaryDataFromTransactionDataForCLV["monetary_value"],
            time=12,
            discount_rate=0.01), 2)

    print(
        summaryDataFromTransactionDataForCLV.sort_values(
            by="CLV", ascending=False).head(10).reset_index())