弄了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)相关推荐

  1. Sklearn:天池新人实战赛o2o优惠券使用预测 part1

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 阿里云官网:天池新人实战赛o2o优惠券使用预测 数据集下载链接 ...

  2. Sklearn:天池新人实战赛o2o优惠券使用预测 part2

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 阿里云官网:天池新人实战赛o2o优惠券使用预测 数据集下载链接 ...

  3. 天池新人实战赛——阿里移动推荐算法大赛(离线赛与平台赛)

    竞赛题目 (离线赛与平台赛题目一样,只是数据量不一样,离线2000w+数据,平台11亿+数据) 在真实的业务场景下,我们往往需要对所有商品的一个子集构建个性化推荐模型.在完成这件任务的过程中,我们不仅 ...

  4. 数据科学家之路 实战1 --- O2O优惠券使用预测(part2)

    本篇文章内容接着part1的模型部分 4.上模型 a.回归树 由于GBDT中用到的树是回归树,而不是我们一般用到的分类树,所以这里举个例子复习一下: 我们利用x1.x2这两个特征可以很容易地把数据分为 ...

  5. 天池 O2O 优惠券使用预测思路解析与代码实战

    个人网站:redstonewill.com 前阵子因为机器学习训练营的任务安排,需要打一场 AI 比赛.然后就了解到最近热度很高且非常适合新人入门的一场比赛:天池新人实战赛o2o优惠券使用预测.今天, ...

  6. 天池比赛:o2o优惠券使用预测

    一.比赛背景 O2O:全称Online To Offline,线上线下电子商务,是把线上的消费者带到现实的商店中去:在线支付线下商品.服务,再到线下去享受服务.通过打折(例如团购).提供信息.服务(例 ...

  7. 天池o2o优惠券使用预测(入门)

    一.前言 近期学习了一下天池中o2o优惠券使用预测的学习赛,主要任务是通过分析建模,精准预测用户是否会在规定时间内使用相应优惠券.这次的参与主要是学习为主,牛刀小试. 二.解决方案 数据分析:对于给定 ...

  8. 【机器学习】天池O2O优惠券使用预测_系统性总结与心得

    Preface:上半年参加天池的O2O优惠券预测赛排名第二,同时参加了学校数据仓库老师的课程改革建设团队,于是把参赛经验总结成文,准备分享给该课程的学弟学妹.现在我把总结的参赛教程文章也发到CSDN上 ...

  9. O2O优惠券使用预测项目总结

    O2O优惠券使用预测笔记 前言 项目介绍 数据 评价方式 赛题分析 基本思路 数据集划分 特征工程 模型选取 过程及代码 导入python库 导入与划分数据集 特征工程 模型训练与调参 预测测试集 总 ...

最新文章

  1. 职场观察:高薪需要什么?
  2. 【原创】强化学习精选资料汇总:从入门到精通,看完这些干货就够啦!
  3. golang多语言支持
  4. js处理json和字符串示例
  5. linux搭建ca服务器搭建,linux下安装EJBCA 搭建私有CA服务器
  6. boost::outcome_v2::std_result用法的测试程序
  7. Owner Useful links
  8. 工程中选择数据结构和算法的依据
  9. winpe装双系统linux_使用syslinux在u盘安装pubbylinux和winpe双系统
  10. 【jmeter】Include Controller控件Test Fragment的使用
  11. “PE文件格式”1.9版 完整译文
  12. Socket网络编程--简单Web服务器(3)
  13. 关于ODI agent的配置部署
  14. 开课吧学python靠谱吗-学设计?学Python?看看我的人生是如何开挂!!!
  15. 海量数据实时计算系统在高并发互联网应用中的原理和实践
  16. Springboot整合mqtt客户端,实现客户端之间的交互(mqtt服务器为apollo1.7)【windows下]】
  17. 绝对差值和 —— 二分
  18. 第六章 第九节 焦点与tab顺序
  19. Python爬取上交所年报下载并转TXT
  20. 基于 Layui form 组件的省市区级联的实现 - 组件化

热门文章

  1. node.js毕业设计基于微信小程序的健康管理系统(源码+程序+LW+部署)
  2. linux centos fedora 扩展硬盘分区操作命令 fdisk df lvm pvcreate vgcreate lvcreate
  3. idea打包jar的多种方式,依赖解决方式
  4. django电话号码新增
  5. AssetBundle的原理及最佳实践
  6. ultraiso软碟通 无法保存hfs文件卷
  7. python翻转图片_832. 翻转图像(python)
  8. 微软正在关闭Windows Live Messenger:这对您意味着什么
  9. 重启Linux服务器上jar包
  10. 如何实现文档在线预览