天池新人实战赛o2o优惠券使用预测六(新的思考)

指标好久没有什么大的提高了……
再次想了想,记录下新的想法:
1 再看了看数据统计的情况

data = pd.read_csv('data/ccf_offline_stage1_train.csv')
t = data[data['Date_received'] != "null"]
print(t['Date_received'].min())
print(t['Date_received'].max())
#使用消费券消费时间
t = data[data['Coupon_id'] != "null"]
t = t[t['Date']!='null']
print(t['Date'].min())
print(t['Date'].max())
#普通消费时间
t = data[data['Coupon_id'] == "null"]
t = t[t['Date']!='null']
print(t['Date'].min())
print(t['Date'].max())

线下领取消费券时间:20160101~20160615
线下使用消费券消费时间:20160101~20160630
线下没有使用消费券消费时间:20160101~20160630

data = pd.read_csv('data/ccf_online_stage1_train.csv')
#领取优惠券时间
t = data[data['Date_received'] != "null"]
print(t['Date_received'].min())
print(t['Date_received'].max())
#使用消费券消费时间
t = data[data['Coupon_id'] != "null"]
t = t[t['Date']!='null']
print(t['Date'].min())
print(t['Date'].max())
#普通消费时间
t = data[data['Coupon_id'] == "null"]
t = t[t['Date']!='null']
print(t['Date'].min())
print(t['Date'].max())

线上领取消费券时间:20160101~20160615
线上使用消费券消费时间:20160101~20160630
线上没有使用消费券消费时间:20160101~20160630

data = pd.read_csv('data/ccf_offline_stage1_test_revised.csv')
#领取优惠券时间
print(data['Date_received'].min())
print(data['Date_received'].max())

验证集领取消费券时间:20160701~20160730

前面一直没有划分训练集和测试集合,首先我们来做个数据分割
按照最终的验证集:
领券时间:20160701~20160730
预测消费:20160701~20160815
所以按照这个样式建立测试集例如:
领券时间:20160515~20160615
预测消费:20160515~20160630
训练集:
领券时间:20160401~20160501
预测消费:20160501~20160515
可以切割出多个训练集、测试集,所以,首先,我们得写个函数,这样可以很方便的进行对不同的训练集、测试集对进行训练,得到多个预测模型。
先把写函数的功能搞定,再进行下一步。

我使用的函数定义方法:(本人python小白,基本靠自学,如有错误请指正)
1 在junpyter中新建.ipynb文件,编写代码,调试通过:

#coding=utf-8
import pandas as pd
from pandas import Series,DataFrame 
import random
from numpy import nan as NA
def helloWorld():
    print('输出:hello')

2 新建文本文件,将调试好的代码复制过去(因为一定要utf-8编码,我找了半天没找到什么文本编辑器默认保存utf-8编码的)
3 修改文本文件名为.py
4 在另外的文件中调用:

from Fun1 import helloWorld
helloWorld()

下面的问题就是怎么传递参数了……
先实现使用函数返回值传递:

def Funtest(a,b):
    print('a=',a)
    print('b=',b)
    c = a+b
    print('c=',c)
    return c

调用:

from Fun1 import Funtest
t1 = 1
t2 = 2
t3 = 0
t3 = Funtest(t1,t2)
print('t3=',t3)

类似C指针的方式做入口参数:(小白,只摸索出这一种方法)

def Funtest(a,b,d):
    print('a=',a)
    print('b=',b)
    c = a+b
    print('c=',c)
    d[0] = c#这一步修改了外面的值
    return c
t1 = 1
t2 = 2
t3 = 0
t4 = [1,2]
t3 = Funtest(t1,t2,t4)
print('t3=',t3)
print('t4=',t4)

输出:
a= 1
b= 2
c= 3
t3= 3
t4= [3, 2]

如何输入字符串作为函数入参呢?

def helloWorld(s):
    print('输出:',s)
s = 'data/a.txt'
helloWorld(s)

所以,现在新写一个函数,入口为文件的地址,函数返回值为模型,同时返回预测成功率。
这样主函数做数据集的分割,调用函数,生成多个模型,然后多个模型统一预测,最后得到组合模型。
工作量貌似还有点大……,一点点来吧。

天池新人 O2O 优惠券是一项在线比,旨在鼓励参者运用数据分析和机器学习技术来解决O2O优惠券发放的问题。O2O即“线上到线下”,是指将线上平台的服务与线下实体商店的购物场景结合起来的商业模式。而优惠券则是一种促销手段,可以为消费者提供折扣、赠品或者其他优惠活动。 这个比的主要任务是根据用户的线上活动行为、线下消费行为,以及优惠券的相关信息,预测用户是否会在规定的时间内使用优惠券来购买指定的商品。通过分析大量的历史数据,参者需要构建准确的预测模型,同时考虑到用户的行为特征和优惠券的属性,从而提高优惠券使用效率和商家的销售转化率。 此项比的意义在于挖掘并优化O2O优惠券的发放策略,提供更精准的目标营销。通过合理分析用户行为和优惠券的匹配关系,商家可以有针对性地向潜在消费者发放优惠券,从而提高用户的购买转化率和忠诚度。同时,这也可以减少优惠券的浪费,降低商家的营销成本。 通过参与天池新人 O2O 优惠券,参者将面临来自各方面的挑战和难题。不仅需要运用数据分析和机器学习算法进行预测,还需要对于O2O领域的相关知识有一定的了解。此外,参者还可以通过与其他选手的交流和分享经验,提高自己的解题能力以及理解O2O优惠券的商业价值。 总的来说,天池新人 O2O 优惠券是一项挑战性的比,旨在促进数据分析和机器学习在O2O领域的应用,为商家提供更智能化、精确化的优惠券发放策略,同时为消费者提供更个性化、经济实惠的购物体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值