Python实现求lift、ks、客户数的函数
时间: 2024-05-15 12:18:43 浏览: 95
以下是Python代码实现:
```python
import pandas as pd
import numpy as np
from sklearn.metrics import lift_score
from scipy.stats import ks_2samp
def calc_lift(y_true, y_pred, bins=10):
df = pd.DataFrame({'y_true': y_true, 'y_pred': y_pred})
df['bin'] = pd.qcut(df['y_pred'], q=bins, labels=False, duplicates='drop')
df_agg = df.groupby('bin').agg({'y_true': ['mean', 'count']})
df_agg.columns = ['conversion_rate', 'count']
df_agg['expected_conversion_rate'] = df_agg['conversion_rate'].mean()
df_agg['lift'] = df_agg['conversion_rate'] / df_agg['expected_conversion_rate']
return df_agg['lift'].values
def calc_ks(y_true, y_pred):
return ks_2samp(y_pred[y_true == 1], y_pred[y_true != 1]).statistic
def calc_cust_num(y_true, y_pred, threshold=0.5):
return np.sum((y_pred >= threshold) == y_true)
```
其中,`calc_lift`函数计算Lift值,`calc_ks`函数计算KS值,`calc_cust_num`函数计算客户数。这些函数的输入参数分别为真实值`y_true`和预测值`y_pred`,其中`y_true`是一个二元向量(0或1),表示是否转化,`y_pred`是一个实数向量,表示模型预测的概率值。`calc_lift`函数中的`bins`参数指定将预测值分成的区间数(默认为10)。`calc_cust_num`函数中的`threshold`参数指定二元分类的阈值(默认为0.5)。
阅读全文