汽车行业偷漏税行为识别

企业做假账偷税漏税的行为社会普遍,偷税漏税行为是违法行为,也直接影响政府财政收入。通过数据挖掘分析企业偷漏税行为,提高查缺查漏效率减。通过对于汽车销售企业的经营指标数据的分析和挖掘,以达到一定程度上对企业的偷漏税倾向的了解。本次数据分析所用的样本数据提供了汽车销售行业纳税人的各种经营指标属性和偷税漏税标签,提取纳税人经营特征可以建立偷漏税行为识别模型。

数据整理和查看

1.导入所需要的package
  import pandas as pd
  import numpy as np
  import matplotlib.pyplot as plt
  %matplotlob inline
  from keras.models import Sequential
  from keras.layers.core import Dense,Activation
  from sklearn.tree import DecisionTreeClassifier
  from sklearn.metric import confusion_matrix
  from skleran.metric import roc_curve
2.读取数据
  filename = 'taxes_EDA.xls'
  data = pd.read_excel(filename,index_col = '纳税人编号')
  data.head(5)

数据是经过标准化处理的,各项数值已经控制到0-1的范围内。

  #查看数据信息
  data.info()

标签类型分别有销售类型,销售模式,汽车销售平均毛利,维修毛利,企业维修收入占销售收入比重 增值税税负,存货周转率,成本费用利润率,整体理论税负,整体税负控制数,办牌率,单台办牌手续费收入,代办保险率,保费返还率等十四个维度,以及输出这一标签。样本数据总共124个。

探索性数据分析 (EDA)

分析汽车行业销售模式的分析

  data.describe()

企业维修收入占销售收入比重、增值税税负、存货周转率、办牌率、单台办牌手续费收入、代办保险率最小值皆为零。

  error_model = data[data['输出']=='异常']['销售模式'].value_counts()
  error_model.plot(kind = 'barh' , facecolor='#CDF76F')
  plt.show()
  error_model_pd = pd.DataFrame()
  model = data['销售模式'].value_counts()
  error_model_pd['所有有销售模式'] = model
  error_model = data[data['输出']=='异常']['销售模式'].value_counts()
  error_model_pd['异常销售模式'] = error_model
  error_model_pd['占比'] = (data[data['输出']=='异常']['销售模式'].value_counts())/(data['销售模式'].value_counts())
  error_model_pd

可以看出异常销售模式中,4S店销售数量最大,但按照占比来看,4S店以下,一级代理商、二级、二级以下、多类型经营店有着严重的偷税漏税倾向。

  error_taxes = data[data['输出']=='异常']['销售类型'].value_counts()
  error_taxes.plot(kind = 'barh' , facecolor='#CDF76F')
  plt.show()
  error_cata_pd = pd.DataFrame()
  model = data['销售类型'].value_counts()
  error_cata_pd['所有有销售类型'] = model
  error_cata = data[data['输出']=='异常']['销售类型'].value_counts()
  error_cata_pd['异常销售类型'] = error_cata
  error_cata_pd['占比'] = (data[data['输出']=='异常']['销售类型'].value_counts())/(data['销售类型'].value_counts())
  error_cata_pd.sort_values('占比',ascending=False)

可以看出国产轿车的数量极大,但是大车型更加有偷税漏税的可能性。

数据处理

离散型变量并无大小关系,运用map映射进行离散分类变量变换。

  data['销售模式']=data['销售模式'].map({
    '4S店':1,
    '一级代理商':2,
    '二级及二级以下代理商':3,
    '多品牌经营店':4,
    '其它':5
  })

  data['销售类型']=data['销售类型'].map({
    '大客车':1,
    '商用货车':2,
    '卡车及轻卡':3,
    '微型面包车':4,
    '工程车':5,
    '其它':6,
    '国产轿车':7,
    '进口轿车':8
  })

  data['输出']=data['输出'].map({
    '正常':1,
    '异常':0
  })

模型建立

将数据按照二八原则分为训练集和测试集,

  p = 0.8
  data_t = data.as_matrix()
  train = data_t[:int(len(data)*p),:]
  test = data_t[int(len(data)*p):,:]
  train[:,:14]
  train[:,14]
1.运用keras的神经网络进行建模。设定输入节点数为14,输出节点数为1,隐藏层节点数为20,使用Adam方法求解。在隐藏层使用Relu(x) = max(x, 0) 做为激活函数。
  from keras.models import Sequential
  from keras.layers.core import Dense,Activation
  net = Sequential()
  net.add(Dense(input_dim = 14,output_dim = 20))
  net.add(Activation('relu'))
  net.add(Dense(input_dim = 20,output_dim = 1))
  net.add(Activation('sigmoid'))
  net.compile(loss = 'binary_crossentropy',optimizer = 'adam')
  net.fit(train[:,:14],train[:,14],nb_epoch=1000,batch_size=10)

损失函数收敛为0.2030

  predict_result = net.predict_classes(train[:,:14]).reshape(len(train))
  cm_plot(train[:,14], predict_result).show() #显示混淆矩阵可视化结果
  
  #自定义混淆矩阵可视化函数
  def cm_plot(y, yp):
  
      from sklearn.metrics import confusion_matrix
    
      cm = confusion_matrix(y, yp) 
  
   
      plt.matshow(cm, cmap=plt.cm.Greens) 
      plt.colorbar() 
  
      for x in range(len(cm)): 
          for y in range(len(cm)):
              plt.annotate(cm[x,y], xy=(x, y), horizontalalignment='center', verticalalignment='center')
  
      plt.ylabel('True label')
      plt.xlabel('Predicted label')
      return plt


  from sklearn.metrics import roc_curve #导入ROC曲线函数

  predict_result = net.predict(test[:,:14]).reshape(len(test))
  fpr, tpr, thresholds = roc_curve(test[:,14], predict_result, pos_label=1)
  plt.plot(fpr, tpr, linewidth=2, label = 'ROC of LM') 
  plt.xlabel('False Positive Rate') 
  plt.ylabel('True Positive Rate') 
  plt.ylim(0,1.05) 
  plt.xlim(0,1.05) 
  plt.legend(loc=4) 
  plt.show() 

分类准确率为(59+33) / (59+33+3+4) = 92.9%



ROC图像

2.利用决策树建模,最深深度为4
  from sklearn.tree import  DecisionTreeClassifier

  tree = DecisionTreeClassifier(max_depth=4)
  tree.fit(train[:,:14], train[:,14])

  cm_plot(train[:,14], tree.predict(train[:,:14])).show()

分类准确率为(59+35) / (59+35+3+2) = 94.9%

  fpr , tpr , thresholds =  roc_curve(test[:,14],tree.predict_proba(test[:,:14])[:,1],pos_label=1)
  plt.plot(fpr,tpr,linewidth = 2 , label = 'ROC of CART')
  plt.xlabel('False Positive Rate')
  plt.ylabel('True Positive Rate')
  plt.ylim(0,1.05)
  plt.xlim(0,1.05)
  plt.legend(loc=4)
  plt.show()

ROC图像

DecisionTree的ROC图像更接近左上角,右下面积更大,分类性能更好,故而选择DecisionTree模型。

ps:尝试过数据变换运用one-shot编码变换,但是后面进行神经网络和决策树时,却容易过拟合,在训练集表现极其良好,但测试集成绩并不好。故而换为最简单的map映射。

  sale_cata = pd.get_dummies(data['销售类型'],prefix = 'sale')
  sale_model = pd.get_dummies(data['销售模式'],prefix = 'model')
  data = pd.concat([data,sale_cata,sale_model],axis = 1)
  data = data.drop('销售类型',axis=1)
  data = data.drop('销售模式',axis=1)
  data_target = data['输出']
  data = data.drop('输出',axis = 1)
  data = pd.concat([data,data_target],axis=1)
  data_map = {
    '正常':1,
    '异常':0,
  }
  data['输出'] = data['输出'].map(data_map)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354

推荐阅读更多精彩内容