赛题说明链接

http://download.csdn.net/detail/q383700092/9538252

R语言  1379640 918539  2021961 1365166   5个 。两个双11.两个双12 一个6.18(年中大促)

统计全国仓库预测的前两周 商品_仓库_个数
rm(list=ls())
w=read.table("F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/item_feature01.csv",header = FALSE,sep="\t")
e=unique(w$V1)
x=0
for (i in 1:length(e)){
w1=w[which(w$V1==e[i]),]
t1=w1[which(w1$V3 <= "20151220"),]
t2=t1[t1$V3>="20151206",]
x[i]=sum(t2$V2)  #满足两个条件 拆开写
}
y=c(1:length(e))
da=data.frame(e,y,x)
da$y='all'
write.table (da, file ="F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/result01_01.csv",sep =",",row.names = F,col.names=F,quote =F)
统计区域仓库预测的前两周 商品_仓库_个数
rm(list=ls())
w=read.table("F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/item_store_feature01.csv",header = FALSE,sep="\t")
e=unique(w$V1)
Group.1=0
Group.2=0
x=0
re=data.frame(Group.1,Group.2,x)
for (i in 1:length(e)){
w1=w[which(w$V1==e[i]),]
t1=w1[which(w1$V4 <= "20151210"),]
w2=t1[t1$V4>="20151128",]
x1=aggregate(w2$V3, list(w2$V1,w2$V2), sum)
re=rbind(re,x1)
}
re=re[-1,]
write.table (re, file ="F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/result02_02.csv",sep =",",row.names = F,col.names=F,quote =F)
方法二 不用聚合
rm(list=ls())
w=read.table("F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/item_store_feature01.csv",header = FALSE,sep="\t")
r1=as.numeric(str_c(w$V1,w$V2,sep='')) #id+仓库号为唯一标示
e=unique(r1)
r=data.frame(r1,w$V3,w$V4)
x=0
for (i in 1:length(e)){
w1=r[which(r$r1==e[i]),]
t1=w1[which(w1$w.V4>="20151128"),]
t2=t1[which(t1$w.V4 <= "20151210"),]
x[i]=sum(t2$w.V3)
}
tmp=data.frame(w$V1,w$V2)
e1=unique.data.frame(tmp)
da=data.frame(e1,e,x)
da2=data.frame(e1,x)
write.table (da2, file ="F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/result02_02.csv",sep =",",row.names = F,col.names=F,quote =F)
查看未统计的预测的前两周 商品_仓库_个数
rm(list=ls())
w=read.table("F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/result04.csv",header = FALSE,sep=",")
V4=rep(1,length(w$V1)) #重复数字
d=data.frame(w,V4)
xx=aggregate(d$V4, list(d$V1,d$V2), sum)
y=xx[which(xx$x==1),]
y$x=0
write.table (y, file ="F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/result05.csv",sep =",",row.names = F,col.names=F,quote =F)

每一个唯一e(i)的数据框
w1=w[which(w$V1==e[1]),]
数据框满足多个条件拆开写
t1=w1[which(w1$V2 <= "20151227"),]
t2=t1[t1$V2>="20151214",]
求满足条件的V3列的和 条件一定要拆开
t1=w1[which(w1$V2 <= "20151227"),]
t2=t1[t1$V2>="20151214",]
sum(t2$V3)

a=c(1,1,1,2,2,2)
b=c(2,3,4,3,4,2)
d=data.frame(a,b)
1,2
1,3
1,4
2,3
2,4
2,2
e=unique(d$a)
for (i in 1:2){
x[i]=sum(d[which(d$a==e[i]),]$b)
}
which(d$b <= 3)
分1组d$a求d$b和
tapply(d$b,d$a,sum)
分两组d$a,d$b求d$b和
aggregate(d$b, list(d$a,d$b), sum)

R语言中的横向数据合并merge及纵向数据合并rbind的使用
我们经常会遇到两个数据框拥有相同的时间或观测值,但这些列却不尽相同。处理的办法就是使用
merge(x, y ,by.x = ,by.y = ,all = ) 函数。

#合并
ID<-c(1,2,3,4)
name<-c("A","B","C","D")
score<-c(60,70,80,90)
student1<-data.frame(ID,name)
student2<-data.frame(ID,score)
total_student1<-merge(student1,student2,by="ID")
total_student1

#横向追加
ID<-c(1,2,3,4)
name<-c("A","B","C","D")
score<-c(60,70,80,90)
sex<-c("M","F","M","M")
student1<-data.frame(ID,name)
student2<-data.frame(score,sex)
total_student2<-cbind(student1,student2)
total_student2

#纵向追加
ID<-c(1,2,3,4)
name<-c("A","B","C","D")
student1<-data.frame(ID,name)
ID<-c(5,6,7,8)
name<-c("E","F","G","H")
student2<-data.frame(ID,name)
total_student3<-rbind(student1,student2)
total_student3

R预测过程
rm(list=ls())
w=read.table("F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/item_feature01.csv",header = FALSE,sep="\t")
e=unique(w$V1)
d=w[which(w$V1==10161w[which(w$V1==101615),]5),]
x=c(1:length(d$V3))
y=d$V3
plot(x,y,'b')

取预测值的0.8
rm(list=ls())
w=read.table("F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/result06.csv",header = FALSE,sep=",")
head(w)
q=floor(0.8*w$V3)  #四舍五入,floor(1.6)向下取整 ceiling(1.6)向上取整
d=data.frame(w$V1,w$V2,q)
write.table (d, file ="F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/result06_1.csv",sep =",",row.names = F,col.names=F,quote =F)

全国总仓库生成14天间隔的序列
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=14,byrow = TRUE)  #将矩阵按行切割成14列
w=read.table("F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/item_feature01.csv",header = FALSE,sep="\t")
e=unique(w$V1)
x=matrix(rep(0,32),nrow=length(e),ncol=32)
for (i in 1:length(e)){
w1=w[which(w$V1==e[i]),]
for (j in 1:32){
t1=w1[which(w1$V3>=d[j,1]),]
t2=t1[which(t1$V3 <= d[j,14]),]
#tmp=w1[which(w1$V3>=d[j,1]),][which(w1$V3 <= d[j,14]),]$V2
#tmp[is.na(tmp)]=0
#x[i,j]=sum(tmp)
x[i,j]=sum(t2$V2)
}
}
x[is.na(x)]=0
y=c(1:length(e))
da=data.frame(e,y,x)
da$y='all'
write.table (da, file ="F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/time01.csv",sep =",",row.names = F,col.names=F,quote =F)
分仓库生成14天间隔的序列
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=14,byrow = TRUE)  #将矩阵按行切割成14列
w=read.table("F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/item_store_feature01.csv",header = FALSE,sep="\t")
r1=as.numeric(str_c(w$V1,w$V2,sep='')) #id+仓库号为唯一标示
e=unique(r1)
r=data.frame(r1,w$V3,w$V4)
x=matrix(rep(0,32),nrow=length(e),ncol=32)
for (i in 1:length(e)){
w1=r[which(r$r1==e[i]),]
for (j in 1:32){
t1=w1[which(w1$w.V4>=d[j,1]),]
t2=t1[which(t1$w.V4 <= d[j,14]),]
x[i,j]=sum(t2$w.V3)
}
}
x[is.na(x)]=0
tmp=data.frame(w$V1,w$V2)
e1=unique.data.frame(tmp)
da=data.frame(e1,e,x)
write.table (da, file ="F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/time02.csv",sep =",",row.names = F,col.names=F,quote =F)
全国预测
rm(list=ls())
w=read.table("F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/time01.csv",header = FALSE,sep=",")
library("forecast")
d=0
for (i in 1:length(w$V1)){
a=w[i,]
y=as.numeric(a)[3:34]
d[i]=floor(forecast(auto.arima(y),1)$mean)
}
d[which(d<0)]=0
da=data.frame(w$V1,w$V2,d)
write.table (da, file ="F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/result08_01.csv",sep =",",row.names = F,col.names=F,quote =F)
查看单独模型
a=w[6,]
y=as.numeric(a)[3:34]
plot(forecast(auto.arima(y),1))

分仓预测
rm(list=ls())
w=read.table("F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/time02.csv",header = FALSE,sep=",")
library("forecast")
d=0
for (i in 1:length(w$V1)){
a=w[i,]
y=as.numeric(a)[4:35]
d[i]=floor(forecast(auto.arima(y),1)$mean)
}
d[which(d<0)]=0
da=data.frame(w$V1,w$V2,d)
write.table (da, file ="F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/result08_02.csv",sep =",",row.names = F,col.names=F,quote =F)
查看单独模型
a=w[6,]
y=as.numeric(a)[4:35]
plot(forecast(auto.arima(y),1))

分成7天一个周期
全国总仓库生成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:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/item_feature01.csv",header = FALSE,sep="\t")
e=unique(w$V1)
x=matrix(rep(0,64),nrow=length(e),ncol=64)
for (i in 1:length(e)){
w1=w[which(w$V1==e[i]),]
for (j in 1:64){
t1=w1[which(w1$V3>=d[j,1]),]
t2=t1[which(t1$V3 <= d[j,7]),]
x[i,j]=sum(t2$V2)
}
}
x[is.na(x)]=0
y=c(1:length(e))
da=data.frame(e,y,x)
da$y='all'
write.table (da, file ="F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/time7_01.csv",sep =",",row.names = F,col.names=F,quote =F)
分仓库生成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:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/item_store_feature01.csv",header = FALSE,sep="\t")
r1=as.numeric(str_c(w$V1,w$V2,sep='')) #id+仓库号为唯一标示
e=unique(r1)
r=data.frame(r1,w$V3,w$V4)
x=matrix(rep(0,64),nrow=length(e),ncol=64)
for (i in 1:length(e)){
w1=r[which(r$r1==e[i]),]
for (j in 1:64){
t1=w1[which(w1$w.V4>=d[j,1]),]
t2=t1[which(t1$w.V4 <= d[j,7]),]
x[i,j]=sum(t2$w.V3)
}
}
x[is.na(x)]=0
tmp=data.frame(w$V1,w$V2)
e1=unique.data.frame(tmp)
da=data.frame(e1,e,x)
write.table (da, file ="F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/time7_02.csv",sep =",",row.names = F,col.names=F,quote =F)
全国预测
rm(list=ls())
w=read.table("F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/time7_01.csv",header = FALSE,sep=",")
library("forecast")
d=0
for (i in 1:length(w$V1)){
a=w[i,]
y=as.numeric(a)[3:66]
d[i]=sum(floor(forecast(auto.arima(y),2)$mean))
}
d[which(d<0)]=0
da=data.frame(w$V1,w$V2,d)
write.table (da, file ="F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/result08_07_1.csv",sep =",",row.names = F,col.names=F,quote =F)
查看单独模型
a=w[6,]
y=as.numeric(a)[3:66]
plot(forecast(auto.arima(y),2))

分仓预测
rm(list=ls())
w=read.table("F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/time7_02.csv",header = FALSE,sep=",")
library("forecast")
d=0
for (i in 1:length(w$V1)){
a=w[i,]
y=as.numeric(a)[4:67]
d[i]=sum(floor(forecast(auto.arima(y),2)$mean))  ##ceiling向上取整
}
d[which(d<0)]=0
da=data.frame(w$V1,w$V2,d)
write.table (da, file ="F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/result08_07_2.csv",sep =",",row.names = F,col.names=F,quote =F)
查看单独模型
a=w[6,]
y=as.numeric(a)[4:67]
plot(forecast(auto.arima(y),2))

建立评估模型
预测最后一个,平方和最小
rm(list=ls())
w=read.table("F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/time7_01.csv",header = FALSE,sep=",")
library("forecast")
d=0
for (i in 1:length(w$V1)){
a=w[i,]
y=as.numeric(a)[3:64]
d[i]=sum(floor(forecast(auto.arima(y),2)$mean))
}
d[which(d<0)]=0
t=w$V65+w$V66
sqrt(mean((d-t)^2))  #213.5006  102.3938
round(abs(d-t)/t,2)
改动1---ceiling向上取整(无明显改动)
d=0
for (i in 1:length(w$V1)){
a=w[i,]
y=as.numeric(a)[3:64]
d[i]=sum(ceiling(forecast(auto.arima(y),2)$mean))
}
d[which(d<0)]=0
t=w$V65+w$V66
sqrt(mean((d-t)^2))  #213.8533  102.3783
改动2--ets模型 (比较明显降低)
d=0
for (i in 1:length(w$V1)){
a=w[i,]
y=as.numeric(a)[3:64]
d[i]=sum(floor(predict(ets(y),2)$mean))
}
d[which(d<0)]=0
t=w$V65+w$V66
sqrt(mean((d-t)^2))  #163.6495  86.44429
改动3--均值预测meanf (比较明显降低)
d=0
for (i in 1:length(w$V1)){
a=w[i,]
y=as.numeric(a)[3:64]
d[i]=sum(floor(meanf(y,h=2)$mean))
}
d[which(d<0)]=0
t=w$V65+w$V66
sqrt(mean((d-t)^2))  #131.1134  136.9257
改动4--naive预测 (效果较差) ARIMA(0,1,0) 
d=0
for (i in 1:length(w$V1)){
a=w[i,]
y=as.numeric(a)[3:64]
d[i]=sum(floor(naive(y,h=2)$mean))
}
d[which(d<0)]=0
t=w$V65+w$V66
sqrt(mean((d-t)^2))  #253.7406  100.6428
改动5--随机游走预测rwf (效果较差)
d=0
for (i in 1:length(w$V1)){
a=w[i,]
y=as.numeric(a)[3:64]
d[i]=sum(floor(rwf(y,h=2,drift=T)$mean))
}
d[which(d<0)]=0
t=w$V65+w$V66
sqrt(mean((d-t)^2))  #262.56  102.3345
改动6--指数平滑预测ses(效果一般)
d=0
for (i in 1:length(w$V1)){
a=w[i,]
y=as.numeric(a)[3:64]
d[i]=sum(floor(ses(y,h=2,initial='simple',alpha=0.9)$mean))
}
d[which(d<0)]=0
t=w$V65+w$V66
sqrt(mean((d-t)^2)) #229.4119  92.77852
改动7--霍尔特 - 温特斯过滤(效果一般)
d=0
for (i in 1:length(w$V1)){
a=w[i,]
y=as.numeric(a)[3:64]
d[i]=sum(floor(holt(y,h=2,damped=F,initial="simple",beta=0.1)$mean))
}
d[which(d<0)]=0
t=w$V65+w$V66
sqrt(mean((d-t)^2)) #179.5424  89.7644
改动8--前两周预测
d=0
d=w$V63+w$V64
t=w$V65+w$V66
sqrt(mean((d-t)^2)) #77.96011
改动9--减弱双11双22影响(0.5*) (效果明显)
as.numeric(w[1,])[3:64]
rm(list=ls())
w=read.table("F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/time7_01.csv",header = FALSE,sep=",")
w$V64=floor(0.5*w$V64) #双12
w$V60=floor(0.5*w$V60) #双11   w$V60=floor(0.25*w$V60) #双11
library("forecast")
d=0
for (i in 1:length(w$V1)){
a=w[i,]
y=as.numeric(a)[3:64]
d[i]=sum(floor(forecast(auto.arima(y),2)$mean))
}
d[which(d<0)]=0
t=w$V65+w$V66
sqrt(mean((d-t)^2))  #104.6499  双11系数改为0.25 102.3938
改动10----线性拟合
rm(list=ls())
w=read.table("F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/time7_01.csv",header = FALSE,sep=",")
library("forecast")
d=0
for (i in 1:length(w$V1)){
a=w[i,]
y=as.numeric(a)[3:64]
x=c(1:length(y))
#r=lm(y~x+1)  
r=lm(y~x+I(x^2))
z=data.frame(x=c(65,66))
d[i]=sum(floor(predict(r,z)))
}
d[which(d<0)]=0
t=w$V65+w$V66
sqrt(mean((d-t)^2))  #140.8061   128.978 125.378
使用改进-减弱双11双22影响(0.5* 0.25*) 
rm(list=ls())
w=read.table("F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/time7_01.csv",header = FALSE,sep=",")
w$V64=floor(0.5*w$V64) #双12
w$V60=floor(0.25*w$V60) #双11
library("forecast")
d=0
for (i in 1:length(w$V1)){
a=w[i,]
y=as.numeric(a)[3:66]
d[i]=sum(floor(forecast(auto.arima(y),2)$mean))
}
d[which(d<0)]=0
da=data.frame(w$V1,w$V2,d)
write.table (da, file ="F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/result09_07_1.csv",sep =",",row.names = F,col.names=F,quote =F)
rm(list=ls())
w=read.table("F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/time7_02.csv",header = FALSE,sep=",")
w$V64=floor(0.5*w$V64) #双12
w$V60=floor(0.25*w$V60) #双11
library("forecast")
d=0
for (i in 1:length(w$V1)){
a=w[i,]
y=as.numeric(a)[4:67]
d[i]=sum(floor(forecast(auto.arima(y),2)$mean))  ##ceiling向上取整
}
d[which(d<0)]=0
da=data.frame(w$V1,w$V2,d)
write.table (da, file ="F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/result09_07_2.csv",sep =",",row.names = F,col.names=F,quote =F)
提交结果去负数
w$V3[which(w$V3<0)]=0
线下评测
ID 仓库 数量 ID 仓库 补少-补多
分解补多补少
全国范围内的成本
c1=补少*max(实际-预测,0)+补多*max(预测-实际,0)
c2=补少*max(实际-预测,0)+补多*max(预测-实际,0)
总的衡量标准是上面两者的相加:
c=c1+c2
rm(list=ls())
x=read.table("F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/ping02.csv",header = FALSE,sep=",")
t1=0
t2=0
for (i in 1:length(x$V1)){
t1[i]=x[i,]$V5*max(x[i,]$V4-x[i,]$V3,0)
t2[i]=x[i,]$V6*max(x[i,]$V3-x[i,]$V4,0)
}
c1=sum(t1)+sum(t2)
生成评测数据"hdfs://hadoop-master.dragon.org:9000/bs/music/pingfeng/input/"放入pingdt01.csv"hdfs://hadoop-master.dragon.org:9000/bs/music/pingfeng/output"删除 结果重命名ping02.csv
w=read.table("F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/time7_01.csv",header = FALSE,sep=",")
library("forecast")
d=0
for (i in 1:length(w$V1)){
a=w[i,]
y=as.numeric(a)[3:64]
d[i]=sum(floor(meanf(y,h=2)$mean)) #预测值
}
t=w$V65+w$V66 #实际值
da=data.frame(w$V1,w$V2,d,t)
write.table (da, file ="F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/pingdt01.csv",sep =",",row.names = F,col.names=F,quote =F)

matlab查看分布情况
clear,clc
load('F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/CAINIAO data p1_20160408/item_feature1.csv')
id=item_feature1(:,2); %取矩阵第二列
id2=unique(id);%去重
t1=item_feature1(find(item_feature1(:,2)==300),:);%找见满足条件的矩阵 41655
t2=sortrows(t1,1);%按第一列排序
x=[1:length(t1(:,1))];

plot(x,t1(:,30),'r-');
hold on
plot(x,t1(:,31),'b-'); 
legend('非聚划算件数','测试');
测试两个序列相关性
xg=xcorr(t1(:,30),t1(:,7)); 
length(find(xg(:,1)>0.6))/length(xg)

plot(x,t1(:,30),'r-');
hold on
plot(x,t1(:,9),'b-');  %cart_ipv被加购次数
plot(x,t1(:,10),'m-'); %cart_uv 加购人次
plot(x,t1(:,12),'g-'); %num_gmv 拍下笔数
plot(x,t1(:,14),'b-'); %qty_gmv 拍下件数
plot(x,t1(:,15),'b-'); %unum_gmv 拍下UV
plot(x,t1(:,17),'b-'); %num_alipay 成交笔数
plot(x,t1(:,18),'b-'); %qty_alipay 成交件数  有的商品一模一样,非聚划算物品
plot(x,t1(:,19),'b-'); %unum_alipay 成交人次
plot(x,t1(:,20),'b-'); %ztc_pv_ipv直通车引导浏览次数
plot(x,t1(:,24),'b-'); %ztc_pv_uv直通车引导浏览人次
plot(x,t1(:,26),'b-'); %ss_pv_uv搜索引导浏览人次
plot(x,t1(:,28),'b-'); %num_alipay_njhs非聚划算支付笔数
plot(x,t1(:,31),'b-'); %unum_alipay_njhs非聚划算支付人次
legend('非聚划算件数','被加购次数','加购人次','拍下笔数');

id=item_feature1(:,6);
id2=unique(id);
28个叶子类目ID
11个大类目ID
168个品牌ID
401个供货商
是否有参与聚划算
节日  周末  工作日
周末特征,工作日特征
促销节日,传统节日特征,节前节后特征, 月初月末
前7,14,21天的销量,搜藏量,流量等,价格
判断周几

d=seq(as.Date("2014/10/06"),as.Date("2015/12/27"), by="day")
d1=weekdays(d)
library("stringr")
d=as.numeric(str_replace(str_replace(d,"-",""),"-",""))  #替换替换匹配的部分library("stringr")
d1=str_replace(d1,"星期五","5")  #替换替换匹配的部分library("stringr")
d1=str_replace(d1,"星期六","6")
d1=str_replace(d1,"星期日","7")
d1=str_replace(d1,"星期一","1")
d1=str_replace(d1,"星期二","2")
d1=str_replace(d1,"星期三","3")
d1=str_replace(d1,"星期四","4")
d1=as.numeric(d1)
time=data.frame(d,d1)

rm(list=ls())
w=read.table("F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/CAINIAO data p1_20160408/item_feature1.csv",header = FALSE,sep=",")
e=unique(w$V2)
for (i in 1:length(e)){
w1=w[which(w$V2==e[i]),]
w1=w1[order(w1[,1],decreasing=F),]  #顺序从小到大 排序
tn=w1$V2  #商品id
t1=w1$V1  #日期
x=t1
library("stringr")
d=str_c(str_sub(x, 1, 4),str_sub(x, 5, 6),str_sub(x, 7, 8),sep='-')
d1=weekdays(as.Date(d))
d1=str_replace(d1,"星期五","5")  #替换替换匹配的部分library("stringr")
d1=str_replace(d1,"星期六","6")
d1=str_replace(d1,"星期日","7")
d1=str_replace(d1,"星期一","1")
d1=str_replace(d1,"星期二","2")
d1=str_replace(d1,"星期三","3")
d1=str_replace(d1,"星期四","4")
t2=as.numeric(d1)  #星期
t7=w1$V29/w1$V30 #商品单价
tmp=length(t7[which(t7=='NaN')])
if(t7[1]=='NaN'){
t7[1]=0
}
while(tmp>0){
t7[which(t7=='NaN')]=t7[which(t7=='NaN')-1]
tmp=length(t7[which(t7=='NaN')])
}
t8=w1$V30 #销量
re=data.frame(tn,t1,t2,t7,t8)
plot(re$t1,re$t8,'l')
#write.table (re,append = TRUE, file ="F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/rere02.csv",sep =",",row.names = F,col.names=F,quote =F)
}
#单独一个物品提取特征值
w1=w[which(w$V2==e[200]),]
w1=w1[order(w1[,1],decreasing=F),]  #顺序从小到大
tn=w1$V2  #商品id
t1=w1$V1  #日期
x=t1
library("stringr")
d=str_c(str_sub(x, 1, 4),str_sub(x, 5, 6),str_sub(x, 7, 8),sep='-')
d1=weekdays(as.Date(d))
d1=str_replace(d1,"星期五","5")  #替换替换匹配的部分library("stringr")
d1=str_replace(d1,"星期六","6")
d1=str_replace(d1,"星期日","7")
d1=str_replace(d1,"星期一","1")
d1=str_replace(d1,"星期二","2")
d1=str_replace(d1,"星期三","3")
d1=str_replace(d1,"星期四","4")
t2=as.numeric(d1)  #星期
t3=w1$V3 #叶子类目ID
t4=w1$V4 #大类目ID
t5=w1$V5 #品牌ID
t6=w1$V6 #供应商ID
t7=w1$V29/w1$V30 #商品单价
tmp=length(t7[which(t7=='NaN')])
if(t7[1]=='NaN'){
t7[1]=0
}
while(tmp>0){
t7[which(t7=='NaN')]=t7[which(t7=='NaN')-1]
tmp=length(t7[which(t7=='NaN')])
}
t8=w1$V30 #销量
re=data.frame(tn,t1,t2,t3,t4,t5,t6,t7,t8)
plot(re$t1,re$t8,'l')
write.table (re,append = TRUE, file ="F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/rere01.csv",sep =",",row.names = F,col.names=F,quote =F)
线性拟合
rm(list=ls())
w=read.table("F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/rere01.csv",header = FALSE,sep=",")
e=unique(w$V1)
w1=w[which(w$V1==e[1]),]
d1=c(1:length(w1$V1))
da=data.frame(d1,w1$V3,w1$V4,w1$V5,w1$V6,w1$V7,w1$V8,w1$V9)
#数据归一化--消除量纲对数据结构的影响
dad=scale(da,center=F,scale=T)
colnames(dad) <- c("V1","V2","V3","V4","V5","V6","V7","V8")
dad=as.data.frame(dad)
library("forecast")
dad1=dad[c(1:(length(dad$V1)-5)),]
dad2=dad[c((length(dad$V1)-4):length(dad$V1)),]
V8=dad1$V8
V1=dad1$V1   #顺序
V2=dad1$V2   #星期
V7=dad1$V7  #商品单价
r=lm(V8~V1+I(V2)+I(V7))
z=dad2[,c(1,2,7)]
row.names(z)<-c(1:length(dad2$V1))
predict(r,z)
dad2$V8

前面没有有个点特别多101615   102955  145284   147185
只要是双11双12量特别大,其他时间基本很少123571 11108

天池大数据比赛-菜鸟仓库比赛-第一赛季记录相关推荐

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

    统计全国仓库预测的前两周 商品_仓库_个数 rm(list=ls()) w=read.table("F:/笔记学习/天池比赛/菜鸟需求预测与分仓规划/data2/item_feature2. ...

  2. 天池大数据比赛,菜鸟仓库比赛,御膳房操作

    御膳房--操作 表名 描述 来源 所属包 所属项目 操作 item_feature 商品粒度相关特征 天池 查看包 tianchi_data (tianchi_data) 已授权 config     ...

  3. AI比赛-NER:“万创杯”中医药天池大数据竞赛——中药说明书实体识别挑战

    大赛概况 疫情催化下,人工智能正在持续助力中医药传承创新加速发展,其中中医用药知识体系沉淀挖掘是一个基础工作.通过挖掘中药说明书构建中药合理用药的知识图谱,将为中医规范诊疗奠定较好基础.挑战旨在通过抽 ...

  4. kaggle和天池大数据比赛的区别

    kaggle和天池大数据的比赛给我的感觉完全不一样,天池上面的比赛给我感觉更像一场考试,大家都是自己埋头做自己的东西交流很少,以拟合线上验证集为最大的目标.kaggle上的比赛给人感觉更像一场交流分享 ...

  5. 天池大数据竞赛第一名,上海交通大学人工智能实验室如何用AI定位肺结节

    癌症,犹如黑暗中的魔鬼,带给人们恐惧与绝望.而肺癌,在我国作为发病率.死亡率最高的一类癌症,伤害着无数家庭.在我国每年都有近60万人死于肺癌.然而,癌症的死亡率与首次发现癌症的时期紧密相关,早期肺结节 ...

  6. 阿里天池大数据之移动推荐算法大赛总结及代码全公布

    移动推荐算法比赛已经结束了一个多星期了,现在写一篇文章来回顾一下自己的参赛历程. 首先,对不了解这个比赛的同学们介绍一下这个比赛(引用自官网): 赛题简介 2014年是阿里巴巴集团移动电商业务快速发展 ...

  7. 新人 天池大数据初涉水

    天池精准医疗大赛--人工智能辅助糖尿病遗传风险预测 一直想做一个天池大数据方面的比赛,以前一直没时间,正逢糖尿病风险预测比赛,阿里举办的,课题比较喜欢,哈哈 进入天池大数据竞赛中心,就可以看到相关信息 ...

  8. 阿里巴巴天池大数据竞赛黄金联赛全面开战,全球同步报名,只为寻找最聪明的你!...

    阿里巴巴天池大数据竞赛黄金联赛全面开战,全球同步报名,只为寻找最聪明的你!          天池大数据竞赛是由阿里巴巴集团主办,面向全球新生代力量的高端算法竞赛.通过开放海量数据和"天池& ...

  9. 阿里天池大数据竞赛——口碑商家客流量预测 A2

    阿里天池大赛koubeiyuce1 2017年二月份,天池大数据比赛,口碑商家客流量预测,参赛地址及详情: https://tianchi.shuju.aliyun.com/competition/i ...

最新文章

  1. 使用java中replaceAll方法替换字符串中的反斜杠
  2. SAP ABAP 如何查询一个变量表里的变量被哪支程序使用到?
  3. ftrace跟踪内核_ftrace、kpatch、systemtap的基本原理、联系和区别
  4. asp.net2.0导出pdf文件完美解决方案
  5. arm linux rsync文件同步
  6. 动态规划练习1 [导弹拦截]
  7. MySQL-InnoDB索引实现
  8. Postcard:简单的音乐贺卡制作
  9. golang生成c-shared so供c语言或者golang调用到例子
  10. [HTML5 Canvas学习]绘制矩形
  11. vue打开二级或者三级页面传输对象,再刷新浏览器数据丢失问题解决(vue使用router传递数据)
  12. PTA-基础编程题目集-7-2 然后是几点
  13. Cocosbuilder使用教程
  14. 《三国演义》分章节梗概
  15. 广西建筑行业人才市场暴涨
  16. 我的世界服务器显示伤害指令,我的世界指令代码大全
  17. 如何解决Win10账户没有了管理员权限
  18. 使用WIFI模块与MQTT服务器进行透传数据通讯(M0E1系列)
  19. 64位ubantu 16.04.2系统安装谷歌浏览器过程
  20. 俄罗斯方块游戏开发 ——图形化编程java swing 项目

热门文章

  1. spring-boot自动配置的原理及实现
  2. OB0202 obsidian kanban插件使用
  3. Qt编写安防视频监控系统58-子模块2窗口信息
  4. python多线程模块threading学习笔记(5)之锁Lock
  5. 从《长安十二时辰》看车联网
  6. 【开源】思源笔记自动备份
  7. Jpa配置实体类创建时间更新时间自动赋值,@CreateDate,@LastModifiedDate
  8. 使用NS_REFINED_FOR_SWIFT使Objective-C API适应Swift
  9. upload-labs攻略
  10. 关于MFi认证你所必须要知道的事情