7、python多种方式进行成单回归预测

多种方案成单预测比较 

1 背景和挖掘目标

  基于关键的业务指标进行成单预测,对影响成单的因子了解

2 分析步骤

01 基于关键特征数据底表的分组处理

02 关于机会、名片表的处理  基于业务逻辑或者数据表现进行分组,查看

03 处理成单跨期导致的名片-成单的数据对应问题

04 观察各关键指标对结果的影响大小,并选择有显著影响的特征

05 利用均值原理计算成单

06 Sequential 神经网络进行调参和预测

07 LinearRegression多项式线性回归预测和验证

08 Lasso套索回归预测

09 贝叶斯岭回归

010 核岭回归预测

011 画出结果

3、代码案例


# 目的,基于业务预测成单

import numpy

import pandas 

# 1 关于订单表的处理

data = pandas.read_csv(
    'D:\\DATA\\pycase\\number2\\project\\pretice\\XZIT.csv' ,
      encoding='gbk'
)


data.columns

# 提取关键字段

Data=data[['周','日期','星期','军团','咨询师','学费金额','成单周期','报名人数','机会时间']]

# 根据业务的而需求将成单周期分为以下几个阶段,研究对象为军团

# 查看成单的分布情况


aggResult=Data.groupby(
        by=['成单周期']
        )['报名人数'].agg({
                '成单单数':numpy.sum
                })
# 根据分组的情况对成单进行分组有查看

# bins划分数据

bins=[-1,0,1,2,3,6,13,30,1000] # 范围,让标签小于bins

# 分组的自定义标签

labels=['当天成单','1天成单','2天成单','3天成单','4-6天成单',
        '7-13天成单','14-30天成单','30以上成单'
        ]
Data['成单周期分层']=pandas.cut(
        Data.成单周期,
        bins,
        labels=labels
        )

# 根据成单分层进行分布分析

AggResult=Data.groupby(
        by=['成单周期分层']
        )['报名人数'].agg({
                '成单单数':numpy.sum
                })

# 使用百分比的形式进行数据的直观展现
pAggResult=round(
        AggResult/AggResult.sum(),
        2
        )*100
        
# 百分数格式设置
        
pAggResult['成单单数'].map('{:,.2f}%'.format)



# 2、关于机会、名片表的处理  基于业务逻辑或者数据表现进行分组
data2 = pandas.read_csv('D:\\DATA\\pycase\\number2\\project\\pretice\\XZIT2.csv')



data2.dtypes


# 对机会进行分组

aggResult2=data2.groupby(
        by=['日期']
        )['销售机会数'].agg({
                '机会数': numpy.sum
                })
## 机会匹配Vlook
DataAgg=pandas.merge(
        Data,
        aggResult2,
        left_on='机会时间',
        right_index=True,
        how='left'
        )

# 由于某些时间段没有对应的数据,所以删除缺失值啊对应的相关数据。

DataAgg=DataAgg.dropna()



#  再次进行分布分析

DaggResult=DataAgg.groupby(
        by=['成单周期']
        )['报名人数'].agg({
                '成单单数':numpy.sum
                })
# 根据分组的情况对成单进行分组有查看

# bins划分数据

bins=[-1,0,1,2,3,6,13,30,1000] # 范围,让标签小于bins

# 分组的自定义标签

labels=['当天成单','1天成单','2天成单','3天成单','4-6天成单',
        '7-13天成单','14-30天成单','30以上成单'
        ]
DataAgg['成单周期分层']=pandas.cut(
        DataAgg.成单周期,
        bins,
        labels=labels
        )

# 根据成单分层进行分布分析

DataAggResult=DataAgg.groupby(
        by=['成单周期分层']
        )['报名人数'].agg({
                '成单单数':numpy.sum
                })

# 使用百分比的形式进行数据的直观展现
pDataAggResult=round(
        DataAggResult/DataAggResult.sum(),
        2
        )*100

pDataAggResult['成单单数'].map('{:,.2f}%'.format)


# 3、两表alphaB匹配,机会匹配成单

DataAggResult['销售机会数']=DataAggResult['成单单数']

# 序列转化时间格式

data2['日期']= pandas.to_datetime(data2['日期'],format='%Y/%m/%d')

# 转化为字符窜格式

data2['日期']=data2.日期.dt.strftime('%Y/%m/%d')

DataAggResult.iloc[0,1]=data2.销售机会数.sum()
DataAggResult.iloc[1,1]=data2[data2.日期<'2018/12/10']['销售机会数'].sum()
DataAggResult.iloc[2,1]=data2[data2.日期<'2018/12/09']['销售机会数'].sum()
DataAggResult.iloc[3,1]=data2[data2.日期<'2018/12/08']['销售机会数'].sum()
DataAggResult.iloc[4,1]=data2[data2.日期<'2018/12/07']['销售机会数'].sum()*159    # 162-3=159
DataAggResult.iloc[5,1]=data2[data2.日期<'2018/12/04']['销售机会数'].sum()*156    # 162-6=156
DataAggResult.iloc[6,1]=da
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值