商业数据分析实战(酒卷隆志/里洋平)
第七章 案例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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/30126.html