天池新人实战赛o2o优惠券使用预测四(别家代码分析1)
弄了2天,发现还是对python不够熟悉,完全不能实现我的各种设想,所以,还是先参考别人的代码,先明白别人的思路和python的写法再说吧。
源代码地址请直接在CSDN上搜索,原文说未经许可不得转载,所以我也不放地址了,就记录下自己的一些阅读的想法。
首先将数据集合分为3个部分:
看看这3个部分是什么样子的:
print(feature1.shape)
print(dataset1.shape)
print(feature2.shape)
print(dataset2.shape)
print(feature3.shape)
print(dataset3.shape)
输出结果:
(995240, 7)
(182078, 7)
(812779, 7)
(258446, 7)
(1036975, 7)
(113640, 6)
处理dataset3,将用户ID提取出来:这个时候t是113640行的
t = t.groupby('user_id').agg('sum').reset_index()
因为dataset3是最终的test集,这个集合中没有不领取优惠券的情况,所以只要有一条记录,就说明此用户领取了一次优惠券,所以设置了初值为1,然后按照用户id做个sum,这样就得到了每个用户领取优惠券的次数。这个时候,t为76309行
t = 用户ID+领取优惠券总数
t1为test集合的用户ID+优惠券ID,113640条
同样的方法:
t1 = t1.groupby(['user_id','coupon_id']).agg('sum').reset_index()
最终得到的是t1 = 用户ID+优惠券ID+次数
这里其实产生了个疑问,就是这个优惠券ID有什么用?训练集和测试集又不会有重复优惠券ID的,这个待以后实验认证。
t1为105958行。
t2是同样用户ID,优惠ID不止1个的集合
先提取出和t1类似的集合,再将接收时间字段修改为str类型
再统计用户ID,同样优惠券ID,不同接收时间
t2 = t2[t2.receive_number > 1]
这样筛选出>1的集合,再统计最大接收时间,最小接收时间
t3选择用户ID,优惠券ID、接收时间,然后和t2合并
t3 = pd.merge(t3,t2,on=['user_id','coupon_id'],how='left')
得到的结果如下:
user_id coupon_id date_received max_date_received min_date_received
0 4129537 9983 20160712 NaN NaN
1 6949378 3429 20160706 NaN NaN
2 2166529 6928 20160727 NaN NaN
3 2166529 1808 20160727 NaN NaN
4 6172162 6500 20160708 NaN NaN
t3.shape= (113640, 5)
这样相当于加上了2个属性,没有这2个属性的为NaN
后续又调用自己写的函数,二值化为0、1、-1
t3.this_month_user_receive_same_coupon_lastone = t3.this_month_user_receive_same_coupon_lastone.apply(is_firstlastone)
t4一个用户接收到的所有优惠券的个数
看到这里,我总算明白了,怎么能统计个数了!
t4 = dataset3[['user_id','date_received']]
t4['this_day_receive_all_coupon_count'] = 1
t4 = t4.groupby(['user_id','date_received']).agg('sum').reset_index()
t5,一个用户不同时间接收到的优惠券的个数
t6,一个用户不同优惠券的接收时间
我还是没有明白,为什么什么都和优惠券ID挂在一起,有什么用呢?
这里是修改列名称的代码
t6.rename(columns={'date_received':'dates'},inplace = True)
t7是领取不同优惠券的数量?
最后同意merge到一起,保存为csv文件
整个过程看的晕,主要是不了解为什么总吧优惠券ID挂上,个人猜测是因为虽然预测集和测试集的优惠券ID不一样,但是领取同一优惠券ID数量、领取不同的优惠券ID这些行为都是一样的,所以把这些数量作为特征。
最后的模型建立和预测肯定不会基于这个优惠券ID。
天池新人实战赛o2o优惠券使用预测四(别家代码分析1)相关推荐
- Sklearn:天池新人实战赛o2o优惠券使用预测 part1
日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 阿里云官网:天池新人实战赛o2o优惠券使用预测 数据集下载链接 ...
- Sklearn:天池新人实战赛o2o优惠券使用预测 part2
日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 阿里云官网:天池新人实战赛o2o优惠券使用预测 数据集下载链接 ...
- 天池新人实战赛——阿里移动推荐算法大赛(离线赛与平台赛)
竞赛题目 (离线赛与平台赛题目一样,只是数据量不一样,离线2000w+数据,平台11亿+数据) 在真实的业务场景下,我们往往需要对所有商品的一个子集构建个性化推荐模型.在完成这件任务的过程中,我们不仅 ...
- 数据科学家之路 实战1 --- O2O优惠券使用预测(part2)
本篇文章内容接着part1的模型部分 4.上模型 a.回归树 由于GBDT中用到的树是回归树,而不是我们一般用到的分类树,所以这里举个例子复习一下: 我们利用x1.x2这两个特征可以很容易地把数据分为 ...
- 天池 O2O 优惠券使用预测思路解析与代码实战
个人网站:redstonewill.com 前阵子因为机器学习训练营的任务安排,需要打一场 AI 比赛.然后就了解到最近热度很高且非常适合新人入门的一场比赛:天池新人实战赛o2o优惠券使用预测.今天, ...
- 天池比赛:o2o优惠券使用预测
一.比赛背景 O2O:全称Online To Offline,线上线下电子商务,是把线上的消费者带到现实的商店中去:在线支付线下商品.服务,再到线下去享受服务.通过打折(例如团购).提供信息.服务(例 ...
- 天池o2o优惠券使用预测(入门)
一.前言 近期学习了一下天池中o2o优惠券使用预测的学习赛,主要任务是通过分析建模,精准预测用户是否会在规定时间内使用相应优惠券.这次的参与主要是学习为主,牛刀小试. 二.解决方案 数据分析:对于给定 ...
- 【机器学习】天池O2O优惠券使用预测_系统性总结与心得
Preface:上半年参加天池的O2O优惠券预测赛排名第二,同时参加了学校数据仓库老师的课程改革建设团队,于是把参赛经验总结成文,准备分享给该课程的学弟学妹.现在我把总结的参赛教程文章也发到CSDN上 ...
- O2O优惠券使用预测项目总结
O2O优惠券使用预测笔记 前言 项目介绍 数据 评价方式 赛题分析 基本思路 数据集划分 特征工程 模型选取 过程及代码 导入python库 导入与划分数据集 特征工程 模型训练与调参 预测测试集 总 ...
最新文章
- 职场观察:高薪需要什么?
- 【原创】强化学习精选资料汇总:从入门到精通,看完这些干货就够啦!
- golang多语言支持
- js处理json和字符串示例
- linux搭建ca服务器搭建,linux下安装EJBCA 搭建私有CA服务器
- boost::outcome_v2::std_result用法的测试程序
- Owner Useful links
- 工程中选择数据结构和算法的依据
- winpe装双系统linux_使用syslinux在u盘安装pubbylinux和winpe双系统
- 【jmeter】Include Controller控件Test Fragment的使用
- “PE文件格式”1.9版 完整译文
- Socket网络编程--简单Web服务器(3)
- 关于ODI agent的配置部署
- 开课吧学python靠谱吗-学设计?学Python?看看我的人生是如何开挂!!!
- 海量数据实时计算系统在高并发互联网应用中的原理和实践
- Springboot整合mqtt客户端,实现客户端之间的交互(mqtt服务器为apollo1.7)【windows下]】
- 绝对差值和 —— 二分
- 第六章 第九节 焦点与tab顺序
- Python爬取上交所年报下载并转TXT
- 基于 Layui form 组件的省市区级联的实现 - 组件化
热门文章
- node.js毕业设计基于微信小程序的健康管理系统(源码+程序+LW+部署)
- linux centos fedora 扩展硬盘分区操作命令 fdisk df lvm pvcreate vgcreate lvcreate
- idea打包jar的多种方式,依赖解决方式
- django电话号码新增
- AssetBundle的原理及最佳实践
- ultraiso软碟通 无法保存hfs文件卷
- python翻转图片_832. 翻转图像(python)
- 微软正在关闭Windows Live Messenger:这对您意味着什么
- 重启Linux服务器上jar包
- 如何实现文档在线预览