chapter7.根据过去的行为能否预测当下

商业数据分析实战(酒卷隆志/里洋平)

第七章 案例5——逻辑回归分析:根据过去的行为能否预测当下

从非智能手机更换到智能手机的分析

我们怀疑很多《垂钓乐园》游戏的用户从非智能手机更换到智能手机后,过去使用的游戏账号可能不能继续在新的手机上使用了。因此需要根据之前用户的访问情况来预估一下到底有多少用户因为这个原因流失了,那么我们应该怎么办呢?

7.1期望增加游戏的智能手机用户量

《垂钓乐园》游戏用户量减少的问题

非智能手机用户量减少主要是由移动终端市场的变化所致

用智能手机用户量的自增加来弥补非智能手机用户量的减少

 

7.2是用户账号迁转设定失败导致的问题吗

思考非智能手机用户流失的结构

游戏账号迁转设定失败导致用户流失的假设

 

7.3在数据不包含正解的情况下收集数据

用户自然流失和账号迁移设定失败导致的用户流失有何不同

在无法获得包含正解的数据的情况下进行建模

分析过程治整理

使用哪种模型

用曲线来拟合“账号迁转”比例

数据加工

1)、数据加载

# 加载数据
filepath = 'E:\\Download\\data_analysis\\data' 
os.chdir(filepath)
dau = pd.read_csv("section7-dau.csv")

#按月、用户ID、设备类型去重
mau = dau.drop_duplicates(['region_month', 'user_id', 'device'])
mau['is_access'] = 1
tmp_mau = mau.pivot_table(index='user_id', columns=['region_month', 'device'], values='is_access').reset_index()
tmp_mau.columns=['user_id','2013_01_FP','2013_01_SP','2013_02_FP','2013_02_SP']

  

#筛选1月用非智能手机登录过的用户
tmp_res = tmp_mau[tmp_mau['2013_01_FP'].notnull()].reset_index(drop=True)
tmp_res.fillna(0, inplace=True)

 2)、添加辅助列

#添加is_access标识第二个月是否来过

def is_access(a, b, c, d ):
    if (a == 1 or b ==1) and (c==1 or d==1):
        return 1
    else:
        return 0

#第二个月是否来过
tmp_res['is_access'] = tmp_res.apply(lambda x: is_access(x['2013_01_FP'],x['2013_01_SP'],x['2013_02_FP'],x['2013_02_SP']), axis=1)

def is_fp(a, b):
    if a == 1 and b ==1:
        return 1
    else:
        return 0

#添加is_fp标识第二个月是否用非智能手机登录
tmp_res['is_fp'] = tmp_res.apply(lambda x: is_fp(x['2013_01_FP'],x['2013_02_FP']), axis=1)

#添加is_fp标识第二个月是否用智能手机登录
tmp_res['is_sp'] = tmp_res.apply(lambda x: is_fp(x['2013_01_FP'],x['2013_02_SP']), axis=1)

3)、数据转换 


# COLUMNS 名字
b = []
for a in np.arange(1,32):
    b.append('X'+str(a)+'day')
# b.insert(0,'user_id')

#获取1月份用户登录信息
dau_fp_1 = dau[(dau.device=='FP') & (dau.region_month=='2013-01')]
dau_fp_1['is_access'] = 1

# 透视表转化
fp_dau_pivot = pd.pivot_table(dau_fp_1, values='is_access', columns='region_day', index='user_id', fill_value=0)
fp_dau_pivot.columns = b
fp_dau_pivot.reset_index(inplace=True)

#
fp_dau_m = pd.merge(fp_dau_pivot, tmp_res[(tmp_res.is_access==0) | (tmp_res.is_sp == 1)][['user_id','is_sp']], on='user_id', how='inner')

 

7.4验证是否能够建立模型

建立模型和验证模型

使用逻辑回归分析来建立模型

from sklearn.linear_model import LogisticRegression
 
lr = LogisticRegression(solver='lbfgs',C=10)
 
x = fp_dau_m.iloc[:,1:-1]
y = fp_dau_m.iloc[:,-1]
 
lr.fit(x,y)
 
print('系数项:',lr.coef_)
print('截距项:',lr.intercept_)
print('得分是:',lr.score(x,y))

从分析结果来探讨模型

使用建立的模型进行预测

yp = lr.predict_proba(x)[:,1]
df = fp_dau_m.copy()
df['prob'] = yp
df['pred'] = df['prob'].apply(lambda x: 1 if x > 0.5 else 0)
df.groupby(['is_sp','pred'])['user_id'].count().reset_index()

    is_sp	pred   user_id
0	    0	   0	   186
1	    0	   1	     4
2	    1	   0	    17
3	    1	   1	    25

 

根据预测结果推测用户群

7.5解决对策

7.6小结

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值