1        汽车销售行业行为识别

背景

汽车销售行业在税收上存在少开发票金额、少记收入,上牌、按揭、保险不入账,不及时确认保修索赔款等情况,导致政府损失大量税收。汽车销售企业的部分经营指标数据能在一定程度上评估企业的偷漏税倾向。样本数据提供了汽车销售行业纳税人的各种属性和是否偷漏税标识,提取纳税人经营特征可以建立偷漏税行为识别模型,识别偷漏税纳税人。

分析方法的主要流程:

2 汽车销售行业行为识别

1.1 数据的提取

由于数据是现成的,所以免去了从后台抽取数据的过程,直接进行读取,代码如下:

# -*- coding: utf-8 -*-
import pandas as pd
data=pd.read_excel('work.xls',index_col=u'纳税人编号')

1.2 数据探索性分析

观察样本数据,可发现样本数据包含15个属性,分别为14个输入特征和1个输出特征,数据探索性分析可以尽早发现样本数据是否存在较大的差异以及对数据整体情况有基本的认识。代码如下:

#数据探索分析
import matplotlib.pyplot as plt
import matplotlib as mpl
fig,axes=plt.subplots(1,2)#创建画布
fig.set_size_inches(20,6)#设置画布大小
ax0,ax1=axes.flat#flat是数组的迭代器
mpl.rcParams['font.sans-serif'] = [u'simHei']
mpl.rcParams['axes.unicode_minus'] = False
data[u'销售类型'].value_counts().plot(kind='barh',ax=ax0,title=u'销售类型分布情况')
data[u'销售模式'].value_counts().plot(kind='barh',ax=ax1,title=u'销售模式分布情况')
data.describe().T#对数据变量进行统计性描述
plt.show()

可视化的结果如下图:

2 汽车销售行业行为识别

从图中可以直观的看出在销售类型分布情况中国产轿车和进口轿车占比较大,在销售模式分布情况4S店和一级代理商占比较大。

2.3数据预处理

观察样本数据可知无缺失数据,故不用考虑此类情况对分析结果的影响,我们在建模时需要将样本中的数据类型转化为数值型,因此要对销售类型和销售模式进行重新编码处理,输出特征进行二值化处理。代码如下:

#数据预处理
data[u'输出']=pd.Categorical(data[u'输出']).codes
data[u'销售类型']=pd.Categorical(data[u'销售类型']).codes
data[u'销售模式']=pd.Categorical(data[u'销售模式']).codes

2.4 构建偷漏税行为识别模型

此次模型的构建我们选取LM神经网络模型

2.4.1 数据划分

训练数据为整体样本数据的80%,相应的测试数据为整体样本的20%。

代码如下:

#数据划分
from sklearn.model_selection import train_test_split
data=data.as_matrix()
train_x,test_x,train_y,test_y=train_test_split(data[:,:14],data[:,14],test_size=0.2,random_state=1)

2.4.2 LM神经网络模型

构建神经网络模型,输入层节点为14个,隐藏层节点为10个,输出层节点为1个,使用Adam方法求解,隐藏层使用Relu**函数,输出层使用Sigmoid函数,模型代码如下:

#构建LM神经网络模型
from keras.models import Sequential#导入神经网络的初始函数
from keras.layers.core import Dense,Activation
net_file='net.model'
net=Sequential()#建立神经网络模型
net.add(Dense(input_dim=14,output_dim=10))
net.add(Activation('relu'))
net.add(Dense(input_dim=10,output_dim=1))
net.add(Activation('sigmoid'))
net.compile(loss='binary_crossentropy',optimizer='adam')
net.fit(train_x,train_y,nb_epoch=1000,batch_size=10)#每次训练10个样本
net.save_weights(net_file)#保存模型
predict_result=net.predict_classes(train_x).reshape(len(train_x))#预测结果
from cm_plot import cm_plot
cm_plot(train_y,predict_result).show()#混淆矩阵显示

混淆矩阵可视化结果如下:

2 汽车销售行业行为识别

模型准确率(37+53)/(37+53+4+5)=90.91%,该模型可用来识别偷漏税行为。

预测结果:2 汽车销售行业行为识别


备注:需要数据的小伙伴可以留言~~

相关文章: