<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def customer_lifetime_value( self, transaction_prediction_model, frequency, recency, T, monetary_value, time=12, discount_rate=0.01, freq="D" ):
 """ Return customer lifetime value. This method computes the average lifetime value for a group of one or more customers. Parameters transaction_prediction_model: model the model to predict future transactions, literature uses pareto/ndb models but we can also use a different model like beta-geo models frequency: array_like the frequency vector of customers' purchases (denoted x in literature). recency: the recency vector of customers' purchases (denoted t_x in literature). T: array_like customers' age (time units since first purchase) monetary_value: array_like the monetary value vector of customer's purchases (denoted m in literature). time: float, optional the lifetime expected for the user in months. Default: 12 discount_rate: float, optional the monthly adjusted discount rate. Default: 0.01 freq: string, optional {"D", "H", "M", "W"} for day, hour, month, week. This represents what unit of time your T is measure in. Returns ------- Series: Series object with customer ids as index and the estimated customer lifetime values as values """

        # use the Gamma-Gamma estimates for the monetary_values
        adjusted_monetary_value = self.conditional_expected_average_profit(frequency, monetary_value)
        return _customer_lifetime_value(
            transaction_prediction_model, frequency, recency, T, adjusted_monetary_value, time, discount_rate, freq=freq
        )