深圳小汽车车牌竞拍价格预测

这几个月深圳小汽车车牌竞拍价格持续飙高,令人发指。
现在均价已经来到9.5万。如果能稍微预测得准一点,不仅可以增加拍中几率,而且可以省下近万块钱。于是我决定动用核武器……
不得不说深圳市政府还是很人性化的,往期的报价统计在这里可以查到:
http://xqctk.sztb.gov.cn/bszn/20171206/1512524976335_1.html
我们就以这些数据进行分析预测。

1 数据读取及基本分析

为便于处理,我将原始数据的列名都换成了英文,稍后我会解释。但列的顺序没有变。
此外,2015年第2期和第3期的投放指标与其他期相比差异太大,所以这两期数据舍弃,最后得到共33期数据。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['font.serif'] = ['SimHei']
data = pd.read_csv('sz_car_lic_auction.csv')
print(data.head())
       No  LicNum  Applicant  FirstOffer  SecondOffer  MinDealed    Avg  \
0  201501    3912       1578       15522        17021      10000  22173
1  201504    3880      10646       11198        11426      12000  13702
2  201505    2947      16393       13806        14321      17800  19496
3  201506    2937      19179       18143        19708      29100  31805
4  201507    2939      14948       27310        30113      49100  54237   MinOfferCnt  MinDealedCnt  LastOffer  Dealed  Paid
0           12            12   0.609829    1417  1333
1         1041            58   0.375576    3880  3866
2           88            82   0.619856    2947  2943
3           99            40   0.569745    2937  2931
4           19            10   0.566574    2939  2927

1.1 投放指标数

由下图可以看到,第7期开始投放数量基本稳定。我们以此后数据的均值作为投放量估计。

plt.plot(data.LicNum)
plt.xlabel('期数')
plt.ylabel('投放指标数')
plt.rc('font', family='SimHei', size=13)
plt.show()
print('投放量估计:%s' % np.mean(data.LicNum[7:]))

投放量估计:2943.1153846153848

1.2 播报均价

竞价当日11点和13点,系统会两次播报均价。此均价是除去报价最高的10%和报价最低的10%后的均价。

plt.plot(data.FirstOffer, label='第一次播报均价')
plt.plot(data.SecondOffer, label='第二次播报均价')
plt.xlabel('期数')
plt.ylabel('播报均价')
plt.legend()
plt.show()

可以看到,从第7期开始走势基本稳定。我们试着用3次多项式拟合播报均价的走势。

NumAuction = np.arange(7, len(data))
FirstOffer7 = data.FirstOffer[7:]
p1 = np.poly1d(np.polyfit(NumAuction, FirstOffer7, 3))
SecondOffer7 = data.SecondOffer[7:]
p2 = np.poly1d(np.polyfit(NumAuction, SecondOffer7, 3))
plt.plot(NumAuction, FirstOffer7, 'r+', label='第一次播报均价')
plt.plot(NumAuction, p1(NumAuction), 'r')
plt.plot(NumAuction, SecondOffer7, 'bo', label='第二次播报均价')
plt.plot(NumAuction, p2(NumAuction), 'b')
plt.xlabel('期数')
plt.ylabel('播报均价')
plt.legend()
plt.show()
print('第一次播报均价预测: %s' % p1(len(data)))
print('第二次播报均价预测: %s' % p2(len(data)))

第一次播报均价预测: 65138.52240802652
第二次播报均价预测: 70924.79933110328

1.3 成交价

当然其实我们最关注的的还是最低成交价和平均成交价。初步预测,可以一样像播报均价一样,用3次多项式进行预测。
有了前两次的经验,这次我们也取第7期及之后的数据。

MinDealed7 = data.MinDealed[7:]
pm = np.poly1d(np.polyfit(NumAuction, MinDealed7, 3))
Avg7 = data.Avg[7:]
pa = np.poly1d(np.polyfit(NumAuction, Avg7, 3))
plt.plot(NumAuction, MinDealed7, 'r+', label='最低成交价')
plt.plot(NumAuction, pm(NumAuction), 'r')
plt.plot(NumAuction, Avg7, 'bo', label='平均成交价')
plt.plot(NumAuction, pa(NumAuction), 'b')
plt.xlabel('期数')
plt.ylabel('成交价')
plt.legend()
plt.show()
print('最低成交价预测: %s' % pm(len(data)))
print('平均成交价预测: %s' % pa(len(data)))

最低成交价预测: 95485.41806020001
平均成交价预测: 105011.92307692222

1.4 有效编码数

有效编码数其实就是参加竞拍的人数(虽然不一定所有人都竞拍)。
可视化之后发现,这个差不多用2次多项式就能拟合。简单预测如下。

Applicant7 = data.Applicant[7:]
pp = np.poly1d(np.polyfit(NumAuction, Applicant7, 2))
plt.plot(NumAuction, Applicant7, 'r+', label='竞价人数')
plt.plot(NumAuction, pp(NumAuction), 'r')
plt.xlabel('期数')
plt.ylabel('竞价人数')
plt.legend()
plt.show()
print('竞价人数预测: %s' % pp(len(data)))

竞价人数预测: 11242.497692307721

2 线性回归预测平均成交价

之前做的都是基于历史数据的简单预测。但实际上,已知投放指标、两次播报平均价、竞价人数,再去预测平均成交价,才是更好的方法。
首先播报平均价就是去掉了报价最高最低各10%算出来的。而以最近一期为例,投放指标2968、竞价人数7665,报价最高的10%会占去1/4的指标。再假设报价是呈正态分布,其实差不多是能估算出均价甚至最低成交价的。
然而我数学并不好。所以我决定线性拟合一下……
之前我们也看到第一次和第二次的播报均价高度相关,这里只用其中一个即可,比如第二次播报均价。我们还是取第7期及以后的数据。

X = data.loc[7:, ['LicNum', 'Applicant', 'SecondOffer']]
y = data.loc[7:, ['Avg']]
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=1)
linreg = LinearRegression()
linreg.fit(X_train, y_train)
print(linreg.intercept_, linreg.coef_)
[-420377.26140118] [[ 138.54092194    1.13717101    1.40703695]]

由于X已经是3维的了,不太好画图。不过模型训练完毕,我们还是可以看下模型的RMSE:

y_pred = linreg.predict(X_test)
rmse = np.sqrt(mean_squared_error(y_test, y_pred))
print('测试集RMSE: %s' % rmse)
测试集RMSE: 4404.21317889

好吧,结果是不怎么理想……手动再见。
但无论如何最后还是要试一把的。根据之前得到的,假设本期2943个牌、竞拍人数11242、第二次播报均价70924,那么预测得到均价为:

X_now = np.mat([[2943, 11242, 70924]])
y_now = linreg.predict(X_now)
print('线性回归预测本次均价: %s' % y_now[0][0])
线性回归预测本次均价: 99925.4370278

差不多10万。算了半天和直接拍脑袋并没有什么鬼区别……
好了,那么问题来了,我现在每天上下班如果打车,加起来40元。假设一年工作222天,那么这些钱可以打多少年的车呢?
11年又3个月。
XX专车,邀您共享……(此处应有广告)
注:项目地址在https://github.com/mvpboss1004/sz_car_lic_auction

深圳小汽车车牌竞拍价格预测相关推荐

  1. 数据分析项目——深圳二手房价分析及价格预测

    目录 一.需求说明 1.1基本任务 1.2 任务目的 1.3测试数据 二.概要设计说明 三.详细设计 3.1 数据检测模块 3.2 因变量分析模块 3.3 自变量分析模块 3.4 可视化模块 3.5  ...

  2. 基于二手车价格预测——特征工程

    特征工程 特征工程 分析: 第一步:异常值处理 箱型图法: 第二步:特征构造 第三步:数据分桶 数据分桶详解 删除不需要的数据 特征归一化 总结--特征 1.特征构造: 2.异常类型处理 3.构造新特 ...

  3. 【组队学习】【24期】河北邀请赛(二手车价格预测)

    河北邀请赛(二手车价格预测) 开源内容: https://github.com/datawhalechina/team-learning-data-mining/tree/master/SecondH ...

  4. 【直播】王茂霖:二手车交易价格预测-千变万化特征工程(河北高校数据挖掘邀请赛)

    二手车交易价格预测-千变万化特征工程 目前 河北高校数据挖掘邀请赛 正在如火如荼的进行中.为了大家更好的参赛,王茂霖分享了 从0梳理1场数据挖掘赛事!,完整梳理了从环境准备.数据读取.数据分析.特征工 ...

  5. 【直播】王茂霖:二手车交易价格预测 Baseline 提高(河北高校数据挖掘邀请赛)

    二手车交易价格预测 Baseline 提高 目前 河北高校数据挖掘邀请赛 正在如火如荼的进行中.为了大家更好的参赛,王茂霖分享了 从0梳理1场数据挖掘赛事!,完整梳理了从环境准备.数据读取.数据分析. ...

  6. 满帮如何将机器学习应用于车货匹配和公路干线价格预测?

    http://www.infoq.com/cn/articles/ml-dl-highway-price 物流的战火,从来都是"非传统"的竞争者从"非传统"的角 ...

  7. 机器学习对价格预测做模型与应用

    说到价格预测,我们首先能想到的就是kaggle一个比赛,关于房价的预测,不过在房地产行业这么火热的时代,做一个中国版的房价预测也很有意思,但是博主想做的是一个对二手设备价格的预测,通过对二手设备的类型 ...

  8. 机器学习---knn之价格预测

    # -*- coding: UTF-8 -*- from random import random ,randint import math def wineprice(rating,age): pe ...

  9. 【算法竞赛学习】二手车交易价格预测-Baseline

    二手车交易价格预测-Baseline Baseline-v1.0 版 Tip:这是一个最初始baseline版本,抛砖引玉,为大家提供一个基本Baseline和一个竞赛流程的基本介绍,欢迎大家多多交流 ...

最新文章

  1. Windows Python3.6 安装 IPython(Jupyter) qtconsole
  2. 如何监控和优化mysql查询性能_如何监视MySQL的性能
  3. POJ 3498 March of the Penguins
  4. ubuntu java 编译器_Ubuntu 16.04配置Java开发环境
  5. research development course at ifm
  6. Docker的容器运行时组件Containerd
  7. nginx $mail-send()发送邮件报错_基于SMTP协议的E-MAIL电子邮件发送客户端软件C#实现...
  8. 关于序列建模,是时候抛弃RNN和LSTM了
  9. java接口签名(Signature)实现方案续
  10. 博士出身好科研产出高,学术谱系真的可以决定一切吗?
  11. node.js 学习笔记四:读取文件
  12. 夏门大学的计算机专业排第几,厦门大学最好重点的专业在全国排名具体情况
  13. 大容量存储方案_助力卫星发射!威固提供自主固盘,满足载荷数据大容量存储能力...
  14. cocos2d- AtlasSprite AtlasSpriteManager
  15. QQ音乐文件缓存位置以及修改方法步骤
  16. 2021中职网络空间安全国赛Web渗透测试
  17. 轻量级分布式日志管理系统Graylog、Loki及ELK的分析和对比
  18. 江苏省苏州市谷歌高清卫星地图下载
  19. 联想小新13pro锐龙版网卡_联想小新Pro13 锐龙版简测
  20. 新手小白进阶_枚举 enum

热门文章

  1. 达梦数据库DEM(企业管理器)部署实战
  2. 机器学习项目一:共享单车
  3. 测评丨阿昆说——惊喜发现一款免费的PCB设计分析软件
  4. 网站服务器坏了要修多久,大学服务器电脑坏了,一分钟修好收500,朋友:有钱不挣是傻子!...
  5. Vue vben admin - 新鲜出炉的高颜值管理后台UI框架,基于 Vue3 和 Ant Design Vue
  6. 好用的chrome插件:鼠标手势、阅读视图、onetab
  7. IP地址的分类和指派范围
  8. 每日一Tip:Jetbrains旗下集成环境(pycharm、IDEA等)使用Ctrl +鼠标滚轮上下滑放大缩小快捷键设置
  9. python发朋友圈突破朋友圈限制_突破限制!原来朋友圈可以发长达5分钟的视频,后悔没早点知道...
  10. JJWT:JWS, JWE, JWK, JWA, JWT