目录
- 背景
- 数据处理流程
- 数据清洗
- 数据预测
- 预测误差值对比
- 源码
背景
此次来源于公司的竞赛项目,举办方给予了40天的二手车、每天1G左右的数据,希望通过这40G左右的数据找出一些洞见,根据数据的分析,我主要集中在对二手车的出售价格的预估。本次采用python处理所有任务。
数据处理流程
具体流程可参考jupeter/pridict_step_by_step.ipynb,这是一个anaconda jupyter网页编码。如下图:
数据清洗
对于这么一个量级的数据清洗,考虑性能,内存占用等因素,通过python多进程,生成器来实现多个数据文件的读取和清洗。在Mac book pro基本上可以达到每3秒可清洗一个文件。可以在后续源代码部分clean/training_set.py找到这部分的代码。包括处理异常数据,去重等,清洗后可以得到如下图数据表:
数据预测
如果需要有一辆二手车需要出售,我希望通过预测程序,能够给一个初步的估价。下面我们来看看如何预测:
(1) 计算数据的相关性
通过pearson算法(数据约接近+/-1相关性越高,越接近0相关性越低)对数据进行相关性计算,我们可以得到如下列表:
从表中我们可以看出,一辆车的损耗率(出售价/新车价格)与使用年限和表里程有较高的相关性。
如果但就使用年限和损耗率的关系,我可以通过线性回归得到如下图:
从图中我们可以看出,使用年限越长,车子的损耗越高,车子的出售价也就月底,当然这跟我们感官理解比较接近,但实际情况是,我们一辆洗车可能在第一年的损耗率较高,可能达20%, 后面2,3,4年可能会有一个较平稳的损耗率(可能在10%左右),当然出现这个差别来源于很多方面,比如说汽车的品牌,汽车瑕疵的部位等等因素。
如果但考虑某一品牌,如benz,可得到下图:
(2) TensorFlow 计算影响二手车价格各因素权重
在通过TensorFlow计算权重之前,进行了归一化处理,以便能够清晰的看出各权重的影响,另外我们在做权重计算时,并没有加入品牌的因素,目前没有对品牌的值进行训练。通过logistic回归计算,可以得到如下图:
(3) 预测二手车价格
如果给予一批二手车进行预测,我们可以得到如下一个预测误差百分比:
从图中可以看出只有半的二手车估计误差在20%范围内,由此我们看出品牌的引入,可能会提高我们的准确性。