25.数理统计技术
25.1 客户的标签
分类:基础标签,统计标签,模型标签
- 基础的客户标签:性别,年龄,职业,可以从原始数据中直接获取的
- 统计标签:原始数据中汇总得到的,比如客户的价值标签
- 模型标签:基础标签,统计标签和已经存在的模型经过构建数据挖掘模型得到的,比如说数据的流失概率,违约概率
25.2 RFM模型
-
R:最后一次消费的时间(最新消费时间)
可以代表用户的流失可能性,消费时间越久远,说明顾客的流失可能性越高
-
F:一段时间内的消费的频次
可以代表挖掘潜力
-
M:一段时间内消费的总金额
可以代表顾客的价值
>>> trad=pd.read_csv('RFM_TRAD_FLOW.csv',encoding='gbk')
transID cumid time amount type_label type
0 9407 10001 14JUN09:17:58:34 199.0 正常 Normal
1 9625 10001 16JUN09:15:09:13 369.0 正常 Normal
2 11837 10001 01JUL09:14:50:36 369.0 正常 Normal
... ... ... ... ... ... ...
26660 14562 40300 19JUL09:13:51:45 0.0 赠送 Presented
26661 40348 40300 22JUN10:15:42:43 0.0 赠送 Presented
26662 rows × 6 columns
>>> import time
# 将非标准的字符串时间转成指定的标准的时间展示,然后再转成时间戳便于以后的计算
>>> trad.loc[:,'time']=trad.loc[:,'time'].map(lambda x:time.mktime(
time.strptime(x,'%d%b%y:%H:%M:%S')))
>>> trad
transID cumid time amount type_label type
0 9407 10001 1.244974e+09 199.0 正常 Normal
1 9625 10001 1.245136e+09 369.0 正常 Normal
2 11837 10001 1.246431e+09 369.0 正常 Normal
... ... ... ... ... ... ...
26660 14562 40300 1.247983e+09 0.0 赠送 Presented
26661 40348 40300 1.277193e+09 0.0 赠送 Presented
26662 rows × 6 columns
>>> for name,obj in trad.groupby('type_label'):
... print(name)
正常
特价
赠送
退货
# 按照每个用户每个销售类型进行分组,查找最近的消费时间
>>> R = trad.groupby(['cumid','type_label'])[['time'