Datawhale入门数据挖掘
阿里云天池赛题:二手车交易价格预测
比赛地址:https://tianchi.aliyun.com/competition/entrance/231784/information
学习路线资料:https://github.com/datawhalechina/team-learning
代码部分转自https://blog.youkuaiyun.com/linqunbin/article/details/98380051?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
涉及相关方面知识
1.什么是jupyter notebook
是一种应用,能让用户将说明文本、数学方程、代码和可视化内容全部组合到一个易于共享的文档中。
2.相关知识:
2.1新建一个新文件夹,在右上角new在利用python3下建立,代表建立一个ipynb文件
2.2建立之后点击标题可以进行
2.3shift+回车输出结果、蓝色模式是命令模式:nx删除命令块、z可以恢复命令
绿色模式是编辑模式:按Esc可以退回到到命令模式
markdown:代码块,按m键可以进入markdown单元格
In开头是代码,按m就可以回到markdown,可以在里面插入说明性文字,还可以插入数学公式
2.4常用快捷键
回车:从命令模式变成编辑模式
Esc:从编辑模式变回命令模式
shift+回车:运行当前代码块,并跳到下一行代码块
选中命令模式:nm可以变成markdown单元格,y可以变成代码单元格
ctrl+回车:运行当前代码块,不会跳到下一个代码块
b:在下方新建单元块
a:在上方新建一个单元块
d:删除掉当前代码块
x:剪切
shift+v:粘贴
v:粘贴到当前
nl:可以对模块里面标行
插入数学公式:和LaTex里面的基本一致,可以直接去查表
1.1 学习目标
明确赛题中的数据和目标,清楚评分体系。
完成相应报名,下载数据和结果提交打卡(可提交示例结果),熟悉比赛流程
1.2 了解赛题
- 赛题概况
- 数据概况
- 预测指标
- 分析赛题
1.2.1 赛题概况(背景说明)
引:赛题是以二手车市场作为背景,要求预测二手汽车的交易价格。
我们可以根据给定的数据集,建立模型,预测二手汽车的交易价格。
这里提到这是一个典型的回归问题
引:来自 Ebay Kleinanzeigen 报废的二手车,数量超过 370,000,包含 20 列变量信息,为了保证 比赛的公平性,将会从中抽取 10 万条作为训练集,5 万条作为测试集 A,5 万条作为测试集 B。同时会对名称、车辆类型、变速箱、model、燃油类型、品牌、公里数、价格等信息进行脱敏。
通过这道赛题来引导大家走进 AI 数据竞赛的世界,主要针对于于竞赛新人进行自我练 习、自我提高。
回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,时间序列模型以及发现变量之间的因果关系。主要用于预测数值型数据,典型的回归例子:数据拟合曲线。
七种回归分析方法链接:http://www.360doc.com/content/20/0321/17/69164172_900780297.shtml
【机器学习】一些常用的回归模型实战(9种回归模型):https://blog.youkuaiyun.com/ChenVast/article/details/82107490 以及实战:https://github.com/935048000/bloodGlucosePredict
数据脱敏:对敏感信息通过一定的规则对数据进行变形,可以实现对敏感数据的保护。数据脱敏方法:https://blog.youkuaiyun.com/weixin_45690272/article/details/101474290
python3使用正则进行脱敏:https://blog.youkuaiyun.com/linqunbin/article/details/98380051?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
1.2.2数据概括
链接:https://blog.youkuaiyun.com/linqunbin/article/details/98380051?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
1.24分析赛题
EDA:探索性数据分析: https://www.cnblogs.com/nxf-rabbit75/p/11148932.html
数据分析与机器学习入门(一)——EDA探索性数据分析:https://blog.youkuaiyun.com/JasonBianZhang/article/details/78471846
探索式数据分析EDA(Exploratory Data Analysis):https://blog.youkuaiyun.com/fjssharpsword/article/details/79152012
-
对数据做数据探索分析
-
适当的特征工程
-
对全体数据,包括训练集数据和测试数据,评价指标为MAE
-
用训练数据训练最小二乘线性回归模型、岭回归模型、Lasso模型,在训练对岭回归模型和Lasso模型的正则超参数调优。
-
三种模型等得到的各特征的系数和各模型在测试集上的性能,挑选最优。
1.3代码
1.3.1 第一步数据的读入
import pandas as pd
import numpy as np
##利用pandas这个库读取数据,所以在数据的读入之前需要加载该数据库
path = './data/'
## 1) 载入训练集和测试集;
Train_data = pd.read_csv(path+'train.csv', sep=' ')
Test_data = pd.read_csv(path+'testA.csv', sep=' ')
##或者利用
##Train_data = pd.read_csv('C:/Users/我思故我在 存在与时间/Desktop/team-learning-master/team-learning-master/数据挖掘实践(二手车价格预测)/data/train.csv', sep=' ')
##Test_data = pd.read_csv('C:/Users/我思故我在 存在与时间/Desktop/team-learning-master/team-learning-master/数据挖掘实践(二手车价格预测)/data/testA.csv', sep=' ')
print('Train data shape:',Train_data.shape) #输出行和列数
print('TestA data shape:',Test_data.shape) #输出行和列数
Train data shape: (150000, 31)
TestA data shape: (50000, 30)
##通过.head()浏览读取数据的形式
Train_data.head()
SaleID | name | regDate | model | brand | bodyType | fuelType | gearbox | power | kilometer | ... | v_5 | v_6 | v_7 | v_8 | v_9 | v_10 | v_11 | v_12 | v_13 | v_14 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 736 | 20040402 | 30.0 | 6 | 1.0 | 0.0 | 0.0 | 60 | 12.5 | ... | 0.235676 | 0.101988 | 0.129549 | 0.022816 | 0.097462 | -2.881803 | 2.804097 | -2.420821 | 0.795292 | 0.914762 |
1 | 1 | 2262 | 20030301 | 40.0 | 1 | 2.0 | 0.0 | 0.0 | 0 | 15.0 | ... | 0.264777 | 0.121004 | 0.135731 | 0.026597 | 0.020582 | -4.900482 | 2.096338 | -1.030483 | -1.722674 | 0.245522 |
2 | 2 | 14874 | 20040403 | 115.0 | 15 | 1.0 | 0.0 | 0.0 | 163 | 12.5 | ... | 0.251410 | 0.114912 | 0.165147 | 0.062173 | 0.027075 | -4.846749 | 1.803559 | 1.565330 | -0.832687 | -0.229963 |
3 | 3 | 71865 | 19960908 | 109.0 | 10 | 0.0 | 0.0 | 1.0 | 193 | 15.0 | ... | 0.274293 | 0.110300 | 0.121964 | 0.033395 | 0.000000 | -4.509599 | 1.285940 | -0.501868 | -2.438353 | <