您的位置:首页 > 大数据

天池大数据比赛-菜鸟仓库比赛-第二赛季记录

2016-06-01 20:38 357 查看
统计全国仓库预测的前两周 商品_仓库_个数

rm(list=ls())

w=read.table("F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/data2/item_feature2.csv",header = FALSE,sep=",")

e=unique(w$V2)

x=0

for (i in 1:length(e)){

w1=w[which(w$V2==e[i]),]

t1=w1[which(w1$V1 <= "20151227"),]

t2=t1[t1$V1>="20151214",]

x[i]=sum(t2$V30)  #满足两个条件 拆开写

}

y=c(1:length(e))

da=data.frame(e,y,x)

da$y='all'

write.table (da, file ="F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/data2/result01.csv",sep =",",row.names = F,col.names=F,quote =F)

统计区域仓库预测的前两周 商品_仓库_个数

rm(list=ls())

w=read.table("F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/data2/item_store_feature2.csv",header = FALSE,sep=",")

library("stringr")

r1=as.numeric(str_c(w$V2,w$V3,sep='')) #id+仓库号为唯一标示

e=unique(r1)

r=data.frame(r1,w$V31,w$V1)

x=0

for (i in 1:length(e)){

w1=r[which(r$r1==e[i]),]

t1=w1[which(w1$w.V1>="20151214"),]

t2=t1[which(t1$w.V1 <= "20151227"),]

x[i]=sum(t2$w.V3)

}

tmp=data.frame(w$V2,w$V3)

e1=unique.data.frame(tmp)

da=data.frame(e1,e,x)

da2=data.frame(e1,x)

write.table (da2, file ="F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/data2/result02.csv",sep =",",row.names = F,col.names=F,quote =F)

da[which(da$x>300),]$x=da[which(da$x>300),]$x*1.1

da$x=floor(da$x)

write.table (da, file ="F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/data2/result01_09.csv",sep =",",row.names = F,col.names=F,quote =F).

未来两周的成交量

特征提取

最近两周的成交量x3

最近一周的成交量x2

最近三周的成交量x4

前一个月的成交量x5

最近一天的成交量x1

全国7天间隔的序列

rm(list=ls())

d=seq(as.Date("2014/10/06"),as.Date("2015/12/27"), by="day")  #生成时间序列

library("stringr")

d=as.numeric(str_replace(str_replace(d,"-",""),"-",""))  #替换替换匹配的部分library("stringr")

d=t(as.matrix(as.data.frame(d)))

d=matrix(d,ncol=7,byrow = TRUE)  #将矩阵按行切割成14列

w=read.table("F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/data2/item_feature2.csv",header = FALSE,sep=",")

e=unique(w$V2)

x=matrix(rep(0,64),nrow=length(e),ncol=64)

x1=0

x2=0

x3=0

x4=0

x5=0

for (i in 1:length(e)){

w1=w[which(w$V2==e[i]),]

x1[i]=sum(w1[which(w1$V1>="20151227"),]$V30)

for (j in 1:64){

t1=w1[which(w1$V1>=d[j,1]),]

t2=t1[which(t1$V1 <= d[j,7]),]

x[i,j]=sum(t2$V30)

}

x2[i]=x[i,64]

x3[i]=x[i,64]+x[i,63]

x4[i]=x[i,64]+x[i,63]+x[i,62]

x5[i]=x[i,57]+x[i,58]+x[i,59]+x[i,60]

}

x[is.na(x)]=0

y=c(1:length(e))

da=data.frame(e,y,x1,x2,x3,x4,x5)

da$y='all'

write.table (da, file ="F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/data2/all_feature.csv",sep =",",row.names = F,col.names=F,quote =F)

训练模型

预测前一天的成交量x1-V3  x1[i]=sum(w1[which(w1$V1>="20151213"),]$V30)  -12.13s-双12后一天

预测前一周的成交量x2-V4  x[i,62]             12.07-12.13

预测前两周的成交量x3-V5  x[i,62]+x[i,61]     11.30-12.13  含双12

预测前三周的成交量x4-V6  x[i,62]+x[i,61]+x[i,60]  11.23-12.13  含双12

预测前一个月(28天)的成交量x5-V7 x[i,55]+x[i,56]+x[i,57]+x[i,58]  10.19-11.15含有双11

预测的两周的成交量x6-V8  x[i,64]+x[i,63]  12.14-12.27 

rm(list=ls())

d=seq(as.Date("2014/10/06"),as.Date("2015/12/27"), by="day")  #生成时间序列

library("stringr")

d=as.numeric(str_replace(str_replace(d,"-",""),"-",""))  #替换替换匹配的部分library("stringr")

d=t(as.matrix(as.data.frame(d)))

d=matrix(d,ncol=7,byrow = TRUE)  #将矩阵按行切割成14列

w=read.table("F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/data2/item_feature2.csv",header = FALSE,sep=",")

e=unique(w$V2)

x=matrix(rep(0,64),nrow=length(e),ncol=64)

x1=0

x2=0

x3=0

x4=0

x5=0

x6=0

for (i in 1:length(e)){

w1=w[which(w$V2==e[i]),]

tt1=w1[which(w1$V1>="20151213"),]

tt2=tt1[which(tt1$V1<="20151213"),]

x1[i]=sum(tt2$V30)  #修改sum

for (j in 1:64){

t1=w1[which(w1$V1>=d[j,1]),]

t2=t1[which(t1$V1 <= d[j,7]),]

x[i,j]=sum(t2$V30)

}

x2[i]=x[i,62]

x3[i]=x[i,62]+x[i,61]

x4[i]=x[i,62]+x[i,61]+x[i,60]

x5[i]=x[i,55]+x[i,56]+x[i,57]+x[i,58]

x6[i]=x[i,64]+x[i,63]

}

x[is.na(x)]=0

y=c(1:length(e))

da=data.frame(e,y,x1,x2,x3,x4,x5,x6)

da$y='all'

write.table (da, file ="F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/data2/all_feature_train.csv",sep =",",row.names = F,col.names=F,quote =F)

计算相关性--直接用命令cor(矩阵)就可以了呀。矩阵的第(i,j)个元素就是第i与第j个变量的相关系数

da2=data.frame(x1,x2,x3,x4,x5,x6)

cor(da2)

cor(x1,x6)

cor.test(x1,x6)

1、构建前几天的时间特征---eg:1day 1week 2week 1month 3month 6month 9month 1year ....

时间角度:每一个月前10天中间10天的数据,最后10天..

用户角度:四个类目下不同时间维度下的消费特征每个用户14个月不同天的数据

预测角度:取不同的数据时间段进行预测,对于你得到的预测数据进行一个加权融合

每月每天新增用户的数量

2、计算其相关性---MATLAB平台的库函数Corrcoef,得出的各字段之间的相关性分析--R cor(x,y) cor.test(x,y)

rm(list=ls())

w=read.table("F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/data2/all_feature_train.csv",header = FALSE,sep=",")

w1=w

da=data.frame(w1$V3,w1$V4,w1$V5,w1$V6,w1$V7,w1$V8)

#数据归一化--消除量纲对数据结构的影响

#dad=scale(da,center=F,scale=T)

dad=da

colnames(dad) <- c("V1","V2","V3","V4","V5","V6")

dad=as.data.frame(dad)

dad1=dad[c(1:(length(dad$V1)-10)),]

dad2=dad[c((length(dad$V1)-9):length(dad$V1)),]

library("forecast")

V1=dad1$V1

V2=dad1$V2

V3=dad1$V3

V4=dad1$V4

V5=dad1$V5

V6=dad1$V6

r=lm(V6~V1+I(V2)+I(V3)+I(V4)+I(V5))

p=floor(predict(r,dad2))

t=dad2$V6

data.frame(p,t)

w[954,]

17449 all--受双11影响特别大的--直接lm预测不好--top2week ok

2806 all

2980 all--直接lm预测-出负数--top2week也不好

      V1  V2 V3   V4   V5   V6   V7  V8

954 17449 all 11  194  244  325 1797 168

955 19417 all 11  178  247  311  161 137

956 26977 all  6   58   94  117  267 103

957  2806 all 26  716  843  979 2340 781

958 28093 all  2   11   15   24   27  28

959  2980 all 22  410  501  624 5102 126

960 30541 all  2   34   55   65  137  37

961  3346 all  2    7   19   22   63  47

962  3424 all 37 1155 1528 1870 2617 718

963  4969 all  4   53   92  100   91  54

     p   t    2w   t-p   t-2w

954  48 168  194   120  -26 --受双11影响特别大的--直接lm预测不好--top2week ok

955 164 137  178   -27  -41 --差距不大

956  71 103   58    32   45 --差距不大

957 256 781  716   525   65 --受双11影响特别大的--直接lm预测不好--top2week ok

958  17  28   11    11   17 --差距不大

959  -4 126  410   130 -284 --直接lm预测-出负数--top2week也不好

960  25  37   34    12    3 --差距不大

961  20  47    7    27   40 --差距不大

962 591 718 1155   127 -437 --受双12影响特别大的--直接lm预测不好--top2week也不好

963  63  54   53    -9    1 --差距不大

找出异常值

boxplot.stats(t1)

预测一周21-27 x6----构造大量特征值用降维度方法判断选什么

预测前一天的成交量x1 12.20

预测前一周的成交量x2 12.14-12.20

预测前两周的成交量x3 12.07-12.20 含双12  (去双12,去双11)

预测前三周的成交量x4 11.30-12.20 含双12

预测前一个月(28天)的成交量x5 11.23-12.20 含双12

预测一周的成交量x6  12.21-12.27

划分7天的周期

rm(list=ls())

d=seq(as.Date("2014/10/06"),as.Date("2015/12/27"), by="day")  #生成时间序列

library("stringr")

d=as.numeric(str_replace(str_replace(d,"-",""),"-",""))  #替换替换匹配的部分library("stringr")

#difftime(as.Date("2014-4-25"),as.Date("2014-4-20"))  #时间差

d=t(as.matrix(as.data.frame(d)))

d=matrix(d,ncol=7,byrow = TRUE)  #将矩阵按行切割成14列

w=read.table("F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/data2/item_feature2.csv",header = FALSE,sep=",")

#去双11 双12

w[which(w$V1==20151212),]$V30=0

w[which(w$V1==20151111),]$V30=0

#----

e=unique(w$V2)

x=matrix(rep(0,64),nrow=length(e),ncol=64)

for (i in 1:length(e)){

w1=w[which(w$V2==e[i]),]

for (j in 1:64){

t1=w1[which(w1$V1>=d[j,1]),]

t2=t1[which(t1$V1<= d[j,7]),]

x[i,j]=sum(t2$V30)

}

}

#x[is.na(x)]=0

y=c(1:length(e))

da=data.frame(e,y,x)

da$y='all'

x1=0

for (i in 1:length(e)){

w1=w[which(w$V2==e[i]),]

tt1=w1[which(w1$V1>="20151220"),]

tt2=tt1[which(tt1$V1<="20151220"),]

x1[i]=sum(tt2$V30) 

}

x2=da$X63

x3=da$X62+da$X63

x4=da$X61+da$X62+da$X63

x5=da$X60+da$X61+da$X62+da$X63

x6=da$X64

dad=data.frame(da$e,da$y,x1,x2,x3,x4,x5,x6)

write.table (dad, file ="F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/data2/all_feature_train22.csv",sep =",",row.names = F,col.names=F,quote =F)

rm(list=ls())

w=read.table("F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/data2/all_feature_train22.csv",header = FALSE,sep=",")

w1=w

da=data.frame(w1$V3,w1$V4,w1$V5,w1$V6,w1$V7,w1$V8)

#数据归一化--消除量纲对数据结构的影响

#dad=scale(da,center=F,scale=T)

dad=da

colnames(dad) <- c("V1","V2","V3","V4","V5","V6")

dad=as.data.frame(dad)

dad1=dad[c(1:(length(dad$V1)-10)),]

dad2=dad[c((length(dad$V1)-9):length(dad$V1)),]

library("forecast")

V1=dad1$V1

V2=dad1$V2

V3=dad1$V3

V4=dad1$V4

V5=dad1$V5

V6=dad1$V6

r=lm(V6~V1+I(V2)+I(V3)+I(V4)+I(V5))

p=floor(predict(r,dad2))

t=dad2$V6

data.frame(p,t,abs(p-t),abs(dad2$V2-t))

p=floor(predict(r,dad))

t=dad$V6

data.frame(p,t,abs(p-t))

cor(da2)

w[904,]

ggg=read.table("F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/data2/item_feature2.csv",header = FALSE,sep=",")

t1=ggg[which(ggg$V2==2806),]

t1[which(t1$V1=="20151212"),]

954   76   90         14              12

955   66   69          3               1

956   41   48          7               7

957  258  478        220             175

958   12   16          4               4

959   93   57         36              12

960   19   19          0               1

961    9   36         27              25

962  321  404         83              90

963   14   34         20              14

去掉双11 12

954  69  90         21               12

955  72  69          3                1

956  43  48          5                7

957 195 478        283              175

958  11  16          5                4

959  67  57         10               12

960  28  19          9                1

961   9  36         27               25

962 268 404        136               90

963  21  34         13               14

预测的数据n2w

1w Double,  07-13

2w Double,  30-13

3w Double,  23-13

1m Double,  16-13

2m Double,  10.05-13

1d Double,  12.13

2d Double,  12.12

3d Double,  12.11

n2w Double 2015-12.14--2015.12.27
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: