CCF比赛_乘用车细分市场销量预测_基于规则的提交方案_0.511

说明:本文为博主原创文章,未经博主允许不得转载。
如果代码有不懂的,欢迎与我探讨!
邮箱:1103540209@qq.com
github地址:https://github.com/wstchhwp

# -*- coding: utf-8 -*-
import pandas as pd
import warnings
warnings.filterwarnings('ignore')



path = "E:/CQUPT/AI/python/spyder/CCF/乘用车细分市场销量预测/data/"

# 训练数据集
# 历史销量数据
train_sales_data = pd.read_csv(path + "Train/train_sales_data.csv")
# 车型搜索数据
train_search_data = pd.read_csv(path + 'Train/train_search_data.csv')
# 汽车垂直媒体新闻评论数据和车型评论数据
train_user_reply_data = pd.read_csv(path + 'Train/train_user_reply_data.csv')
# 测试数据集
test_sales_data = pd.read_csv(path + 'evaluation_public.csv')

#  **********2018年1月,提取方式:历史月份销量比例,考虑时间衰减,月份越近占比越高**********
# 季度
# 各个省份所有车型:2017年1月的销量 / 2016年12月份的销量  1320个比例值
m1_12 = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==1) , 'salesVolume'].values / train_sales_data.loc[(train_sales_data.regYear==2016)&(train_sales_data.regMonth==12), 'salesVolume'].values
# 各个省份所有车型:2017年1月的销量 / 2016年11月份的销量  1320个比例值
m1_11 = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==1) , 'salesVolume'].values / train_sales_data.loc[(train_sales_data.regYear==2016)&(train_sales_data.regMonth==11), 'salesVolume'].values
# 各个省份所有车型:2017年1月的销量 / 2016年10月份的销量  1320个比例值
m1_10 = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==1) , 'salesVolume'].values / train_sales_data.loc[(train_sales_data.regYear==2016)&(train_sales_data.regMonth==10), 'salesVolume'].values
# 各个省份所有车型:2017年1月的销量 / 2016年9月份的销量  1320个比例值
m1_09 = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==1) , 'salesVolume'].values / train_sales_data.loc[(train_sales_data.regYear==2016)&(train_sales_data.regMonth==9) , 'salesVolume'].values
# 年
# 各个省份所有车型:2017年1月的销量 / 2016年1月份的销量  1320个比例值
m1_001 = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==1) , 'salesVolume'].values / train_sales_data.loc[(train_sales_data.regYear==2016)&(train_sales_data.regMonth==1) , 'salesVolume'].values

# 再用2017年9月-12月份的值分别乘以刚才的比例得到2018年1月份的销量
m1_12_volum = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==12), 'salesVolume'].values * m1_12
m1_11_volum = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==11), 'salesVolume'].values * m1_11
m1_10_volum = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==10), 'salesVolume'].values * m1_10
m1_09_volum = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==9) , 'salesVolume'].values * m1_09
m1_001_volum = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==8) , 'salesVolume'].values * m1_001

# 2017年9月-12月份对于2018年1月的预测:贡献比列逐渐在减少
test_sales_data.loc[test_sales_data.regMonth==1, 'forecastVolum'] =  m1_12_volum/2 + m1_11_volum/4 + m1_10_volum/8 + m1_09_volum/16 + m1_001_volum/16


#  **********2018年2月,提取方式:历史月份销量比例,考虑时间衰减,月份越近占比越高**********
m2_01 = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==2) , 'salesVolume'].values / train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==1), 'salesVolume'].values
m2_12 = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==2) , 'salesVolume'].values / train_sales_data.loc[(train_sales_data.regYear==2016)&(train_sales_data.regMonth==12), 'salesVolume'].values
m2_11 = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==2) , 'salesVolume'].values / train_sales_data.loc[(train_sales_data.regYear==2016)&(train_sales_data.regMonth==11), 'salesVolume'].values
m2_10 = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==2) , 'salesVolume'].values / train_sales_data.loc[(train_sales_data.regYear==2016)&(train_sales_data.regMonth==10) , 'salesVolume'].values

m2_002 = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==2) , 'salesVolume'].values / train_sales_data.loc[(train_sales_data.regYear==2016)&(train_sales_data.regMonth==2) , 'salesVolume'].values

m2_01_volum = test_sales_data.loc[(test_sales_data.regYear==2018)&(test_sales_data.regMonth==1),  'forecastVolum'].values * m2_01
m2_12_volum = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==12), 'salesVolume'].values * m2_12
m2_11_volum = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==11), 'salesVolume'].values * m2_11
m2_10_volum = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==10) , 'salesVolume'].values * m2_10
m2_002_volum = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==2) , 'salesVolume'].values * m2_002

test_sales_data.loc[test_sales_data.regMonth==2, 'forecastVolum'] =  m2_01_volum/2 + m2_12_volum/4 + m2_11_volum/8 + m2_10_volum/16 + m2_002_volum/16


#  **********2018年3月,提取方式:历史月份销量比例,考虑时间衰减,月份越近占比越高**********
m3_02 = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==3) , 'salesVolume'].values / train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==2), 'salesVolume'].values
m3_01 = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==3) , 'salesVolume'].values / train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==1), 'salesVolume'].values
m3_12 = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==3) , 'salesVolume'].values / train_sales_data.loc[(train_sales_data.regYear==2016)&(train_sales_data.regMonth==12), 'salesVolume'].values
m3_11 = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==3) , 'salesVolume'].values / train_sales_data.loc[(train_sales_data.regYear==2016)&(train_sales_data.regMonth==11) , 'salesVolume'].values

m3_003 = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==3) , 'salesVolume'].values / train_sales_data.loc[(train_sales_data.regYear==2016)&(train_sales_data.regMonth==3) , 'salesVolume'].values

m3_02_volum = test_sales_data.loc[(test_sales_data.regYear==2018)&(test_sales_data.regMonth==2),  'forecastVolum'].values * m3_02
m3_01_volum =  test_sales_data.loc[( test_sales_data.regYear==2018)&( test_sales_data.regMonth==1), 'forecastVolum'].values * m3_01
m3_12_volum = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==12), 'salesVolume'].values * m3_12
m3_11_volum = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==11) , 'salesVolume'].values * m3_11
m3_003_volum = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==3) , 'salesVolume'].values * m3_003

test_sales_data.loc[test_sales_data.regMonth==3, 'forecastVolum'] =  m3_02_volum/2 + m3_01_volum/4 + m3_12_volum/8 + m3_11_volum/16 + m3_003_volum/16


#  **********2018年4月,提取方式:历史月份销量比例,考虑时间衰减,月份越近占比越高**********
m4_03 = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==4) , 'salesVolume'].values / train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==3), 'salesVolume'].values
m4_02 = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==4) , 'salesVolume'].values / train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==2), 'salesVolume'].values
m4_01 = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==4) , 'salesVolume'].values / train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==1), 'salesVolume'].values
m4_12 = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==4) , 'salesVolume'].values / train_sales_data.loc[(train_sales_data.regYear==2016)&(train_sales_data.regMonth==12) , 'salesVolume'].values

m4_004 = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==4) , 'salesVolume'].values / train_sales_data.loc[(train_sales_data.regYear==2016)&(train_sales_data.regMonth==4) , 'salesVolume'].values

m4_03_volum = test_sales_data.loc[(test_sales_data.regYear==2018)&(test_sales_data.regMonth==3), 'forecastVolum'].values * m4_03
m4_02_volum = test_sales_data.loc[(test_sales_data.regYear==2018)&(test_sales_data.regMonth==2), 'forecastVolum'].values * m4_02
m4_01_volum = test_sales_data.loc[(test_sales_data.regYear==2018)&(test_sales_data.regMonth==1), 'forecastVolum'].values * m4_01
m4_12_volum = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==12) , 'salesVolume'].values * m4_12
m4_004_volum = train_sales_data.loc[(train_sales_data.regYear==2017)&(train_sales_data.regMonth==4) , 'salesVolume'].values * m4_004

test_sales_data.loc[test_sales_data.regMonth==4, 'forecastVolum'] =  m4_03_volum/2 + m4_02_volum/4 + m4_01_volum/8 + m4_12_volum/16 + m4_004_volum/16

test_sales_data['forecastVolum'] = test_sales_data['forecastVolum'].apply(lambda x: 0 if x < 0 else int(round(x)))
test_sales_data[['id','forecastVolum']].to_csv('../data/sub/sub.csv',index=False)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是天才很好

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值