第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > 数据挖掘报告——汽车销售行业行为识别

数据挖掘报告——汽车销售行业行为识别

时间:2019-01-02 22:32:53

相关推荐

数据挖掘报告——汽车销售行业行为识别

目录

项目背景需求分析功能分析详细讲解1. 数据导入2.数据处理2.1独热特征编码2.2分离结果集2.3转换文本为int类型2.4删除多余数据3数据可视化3.1数据归一化3.2数据降维3.3数据绘制4训练数据4.1SVM训练模型4.2DecisionTree训练模型5查看结果参考文献

项目背景

汽车销售行业在税收上存在少开发票金额、少记收入,上牌、按揭、保险不入账,不及时确认保修索赔款等情况,导致政府损失大量税收。汽车销售企业的部分经营指标数据能在一定程度上评估企业的偷漏税倾向。

需求分析

使用Python完成数据处理。样本数据4s.csv中提供了汽车销售行业纳税人的各种属性和是否偷漏税标识标签,通过样本数据挖掘纳税人的经营特征,进而建立偷漏税行为识别模型,识别偷漏税纳税人。

功能分析

使用pandas完成数据初步导入,将数据从不易处理的文本类型转换为int类型,同时分离训练集和结果集。完成后需要对高维数据降维,实现数据可视化,最后利用SVM模块和生成树算法训练模型,拟合训练集数据,最终测试训练后的准确度。

项目整体的逻辑流程如下图。

详细讲解

首先导入以下头文件,方便后续使用。

# -*- coding: utf-8 -*-# 使用pandas完成数据的导入import pandas as pd# 归一化的data为numpy.array类型,此处调用为了调试方便import numpy as np# 使用svm, tree完成分类训练,使用preprocessing完成数据预处理from sklearn import svm, preprocessing, tree# 使用PCA进行数据降维,方便显示from sklearn.decomposition import PCA# 使用pyplot实现数据可视化import matplotlib.pyplot as plt

为了方便后续输出调试,需要设置pandas显示的最大行列数,以及numpy的最大显示数量。

# 修改显示大小限制,方便调试pd.set_option('display.max_columns', None)pd.set_option('display.max_rows', None)np.set_printoptions(threshold=np.inf)

1. 数据导入

样本数据已经提供,可以直接读取。

# 读入数据集,并将'纳税人编号'作为索引,其中u代表Unicode编码data = pd.read_csv('4s.csv', index_col=u'纳税人编号')

2.数据处理

2.1独热特征编码

由于样本的独热特征为文本格式,需要转变为int类型才方便后续处理。

# 使用Categorical().codes对独热特征进行编码,将String类型转为int类型,方便后续分类处理data[u'输出'] = pd.Categorical(data[u'输出']).codes

2.2分离结果集

样本数据包含了结果集,需要分离数据。

# 将结果集单独取出,便于后续测试训练的准确度label = data[u'输出'].astype(int)

2.3转换文本为int类型

样本数据记录存在文本类型,需要转换为int类型,原因同上。

# 使用get_dummies将不同的文本类型的记录变成表头,将记录变成int类型,来标识原本的文本记录# 然后添加前缀避免列名重复,将结果并入原表中data = data.join(pd.get_dummies(data[u'销售类型']).astype(int).add_prefix(u'销售类型_'))data = data.join(pd.get_dummies(data[u'销售模式']).astype(int).add_prefix(u'销售模式_'))

2.4删除多余数据

由于上文已经将处理后的数据添加回原数据集,所以需要删除已经处理过的旧数据,同时删除数据中的结果集,否则训练将失去意义。

# 删除已经处理过的多余的列,删除结果集对应的列del data[u'销售类型'], data[u'销售模式'], data[u'输出']

3数据可视化

3.1数据归一化

虽然当前数据已经全部变为int类型,可以处理,但是最好能将数据的量级归一化,避免数据过大过小,不方便后续数据可视化。

# 使用preprocessing完成数据预处理,将数据集的量级归一化data = preprocessing.scale(data)

3.2数据降维

当前数据是多维的,如果想实现可视化,只能降低维度,使用PCA实现数据集的降维,维度为2。

# 使用PCA将数据降维至二维,方便可视化pca = PCA(n_components=2)data_2D = pca.fit_transform(data)

3.3数据绘制

使用scatter绘制散点图,实现数据可视化。

# 根据降维的数据绘制散点图,同时根据原本结果集的不同而区分颜色plt.scatter(data_2D[:, 0], data_2D[:, 1], c=label)plt.show()

数据显示如下。

4训练数据

4.1SVM训练模型

使用SCM的SVC进行训练,微调惩罚系数和核函数,得到比较合适的模型。特别需要注意,惩罚系数需要控制在0到1之间,核函数可以选’linear’,‘poly’,'rbf’等等。

# 使用SVC完成数据分类,惩罚系数设为0.75,核函数为线性classifier_01 = svm.SVC(C=0.75, kernel='linear')# 开始SVC拟合classifier_01.fit(data, label)

4.2DecisionTree训练模型

使用DecisionTreeClassifier完成模型训练。

# 使用决策生成树算法完成数据分类classifier_02 = tree.DecisionTreeClassifier()# 开始生成树对训练集的拟合classifier_02.fit(data, label)

5查看结果

最终显示模型训练的准确度,可以发现决策树生成算法的准确度比SVM模型要好一些。

# 测试训练的准确性,测试用例和训练用例相同print(classifier_01.score(data, label))# 测试训练的准确性,同上print(classifier_02.score(data, label))

参考文献

汽车销售行业行为识别

pd.Categorical 的用法

机器学习——python scikit-learn SVC分类

Pandas 使用

在Pycharm中安装Pandas库方法

详解pandas的read_csv方法

Python-将CSV文件作为表格打印到控制台中

pandas.get_dummies 的用法

彻底解决python打印结果省略号的问题

Python pandas.DataFrame.add_prefix函数方法的使用

预处理数据的方法总结(使用sklearn-preprocessing)

preprocessing.scale()函数详解

plt.scatter用法注意事项

Python中scatter函数参数详解

Python数据挖掘 sklearn-SVM分类(SVC)

python使用SVC算法

sklearn.svm.SVC中kernel参数说明

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。