您现在的位置是:首页 > 正文

数据挖掘-二手车价格预测 Task01:赛题理解

2024-04-01 05:55:05阅读 1

数据挖掘-二手车价格预测系列

在这里插入图片描述

1.赛题概况

赛题以预测二手车的交易价格为任务,数据集来自某交易平台的二手车交易记录,总数据量超过40w,包含31列变量信息,其中15列为匿名变量。为了保证比赛的公平性,将会从中抽取15万条作为训练集,5万条作为测试集A,5万条作为测试集B,同时会对name、model、brand和regionCode等信息进行脱敏。

赛题链接零基础入门数据挖掘 - 二手车交易价格预测-天池大赛-阿里云天池

2.分析赛题

  1. 此题为传统的数据挖掘问题,通过数据科学以及机器学习深度学习的办法来进行建模得到结果。

  2. 此题是一个典型的回归问题。

  3. 主要应用xgb、lgb、catboost,以及pandas、numpy、matplotlib、seabon、sklearn、keras等等数据挖掘常用库或者框架来进行数据挖掘任务。

  4. 通过EDA来挖掘数据的联系和自我熟悉数据。

3.数据概况

train.csv

SaleID - 销售样本ID

name - 汽车编码

regDate - 汽车注册时间

model - 车型编码

brand - 品牌

bodyType - 车身类型

fuelType - 燃油类型

gearbox - 变速箱

power - 汽车功率

kilometer - 汽车行驶公里

notRepairedDamage - 汽车有尚未修复的损坏

regionCode - 看车地区编码

seller - 销售方

offerType - 报价类型

creatDate - 广告发布时间

price - 汽车价格

数字全都脱敏处理,都为label encoding形式,即数字形式

数据特征查看:

Train_data.head()

Train_data.info()

Train_data.desc()

import numpy as np
import pandas as pd
#载入数据集
Train_data=pd.read_csv('car_train_0110.csv',sep=' ')
Test_data=pd.read_csv('car_testA_0110.csv',sep=' ')
print('Train data shape:',Train_data.shape)
print('TestA data shape:',Test_data.shape)

Train data shape: (250000, 40)
TestA data shape: (50000, 39)

Train_data.head()
SaleID    name    regDate    model    brand    bodyType    fuelType    gearbox    power    kilometer    ...    v_14    v_15    v_16    v_17    v_18    v_19    v_20    v_21    v_22    v_23
0    134890    734    20160002    13.0    9    NaN    0.0    1.0    0    15.0    ...    0.092139    0.000000    18.763832    -1.512063    -1.008718    -12.100623    -0.947052    9.077297    0.581214    3.945923
1    306648    196973    20080307    72.0    9    7.0    5.0    1.0    173    15.0    ...    0.001070    0.122335    -5.685612    -0.489963    -2.223693    -0.226865    -0.658246    -3.949621    4.593618    -1.145653
2    340675    25347    20020312    18.0    12    3.0    0.0    1.0    50    12.5    ...    0.064410    0.003345    -3.295700    1.816499    3.554439    -0.683675    0.971495    2.625318    -0.851922    -1.246135
3    57332    5382    20000611    38.0    8    7.0    0.0    1.0    54    15.0    ...    0.069231    0.000000    -3.405521    1.497826    4.782636    0.039101    1.227646    3.040629    -0.801854    -1.251894
4    265235    173174    20030109    87.0    0    5.0    5.0    1.0    131    3.0    ...    0.000099    0.001655    -4.475429    0.124138    1.364567    -0.319848    -1.131568    -3.303424    -1.998466    -1.279368
5 rows × 40 columns

4.评价指标

基于混淆矩阵的评价指标

如果某个二元分类问题,训练拟合得到了几个模型假设,那么通常我们选择在验证集上,F1 Score 数值最大的那个模型假设。

1)召回率(查全率):反映预测对的正例数占真正的正例数的比率

Recall=\frac{TP}{TP+FN}

2)准确率:反映分类器对整个样本的判定能力,能将正的判定为正,负的判定为负

Accuracy =\frac{TP+TN}{TP+FP+TN+FN}

3)查准率:所得数值与真实值之间的精确程度;预测正确的正例数占预测为正例总量的比率

Precision=\frac{TP}{TP+FP}

分类指标评价计算示例

import numpy as np
from sklearn.metrics import accuracy_score
y_pred = [0, 1, 0, 1]
y_true = [0, 1, 1, 1]
print('ACC:',accuracy_score(y_true, y_pred))
ACC: 0.75
accuracy_score 分类准确率分数是指所有分类正确的百分比。

## AUC
import numpy as np
from sklearn.metrics import roc_auc_score
y_true = np.array([0, 0, 1, 1])
y_scores = np.array([0.1, 0.4, 0.35, 0.8])
print('AUC socre:',roc_auc_score(y_true, y_scores))
AUC socre: 0.75


AUC是衡量二分类模型优劣的一种评价指标,其他评价指标有精确度、准确率、召回率,而AUC比这三者更为常用。因为一般在分类模型中,预测结果都是以概率的形式表现,如果要计算准确率,通常都会手动设置一个阈值来将对应的概率转化成类别,这个阈值也就很大程度上影响了模型准确率的计算。AUC能很好描述模型整体性能的高低。从一定程度上讲,它可以描述预测结果中正例排在负例前面的概率。 

AUC(Area under the Curve of ROC)是ROC曲线下方的面积,是判断二分类预测模型优劣的标准。ROC(receiver operating characteristic curve)属于信号检测理论。通俗点的解释:从正样本中随机抽取一个样本,从负样本中随机抽取一个样本,通过二分类模型对其进行预测,得到正样本的预测概率为p1,负样本的为p2,p1>p2的可能性或概率就是AUC。 
ROC曲线的横坐标是伪阳性率(也叫假正类率,False Positive Rate),纵坐标是真阳性率(真正类率,True Positive Rate),这的计算方法如下: 
伪阳性率(FPR)  判定为正例却不是真正例的概率 真阳性率(TPR)  判定为正例也是真正例的概率 x轴与y轴的值域都是[0, 1],随着判定正例的阈值不断增加,我们可以得到一组(x, y)的点,相连便作出了ROC曲线,示例图如下:  
 
ROC图从直观上看能得出两个结论:曲线点越接近右下角表示当前阈值预测正例出错的概率越高,准确性较低;曲线点越接近左上角。

回归指标评价计算
 

# coding=utf-8
import numpy as np
from sklearn import metrics
def mape(y_true,y_pred):
    return np.mean(np.abs((y_pred - y_true)/y_true))
y_true = np.array([1.0,5.0,4.0,3.0,2.0,5.0,-3.0])
y_pred = np.array([1.0,4.5,3.8,3.2,3.0,4.8,-2.2])

#Mse
print('MSE:',metrics.mean_squared_error(y_true,y_pred))
print('RMSE:',np.sqrt(metrics.mean_squared_error(y_true,y_pred)))
print('MAE:',metrics.mean_absolute_error(y_true,y_pred))
print('MAPE:',mape(y_true,y_pred))


 

网站文章

  • 美国计算机加音乐专业,卡内基梅隆大学音乐与技术本科专业 让音乐无限可能!...

    美国计算机加音乐专业,卡内基梅隆大学音乐与技术本科专业 让音乐无限可能!...

    近些年,随着越来越多的跨界合作,衍生出一个新的职业,音乐技术,它是集科技与艺术于一体,越来越多的音乐制作人将电脑和软件作为自己的新式乐器,新世纪的电子音乐模式走入大家的视野,从而音乐与技术专业非常火爆...

    2024-04-01 05:54:24
  • 从ReentrantLock角度解析AQS

    从ReentrantLock角度解析AQS

    基于JDK8,今天重点来聊下JUC并发包下的一个类,AbstractQueuedSynchronizer。首先,浅显的从名字上看,抽象的队列同步器;实际上,这名字也跟它的作用如出一辙。抽象,即需要被继承;队列同步器,其内部维护了一个队列,供线程入队等待;最终实现多个线程访问共享资源的功能。

    2024-04-01 05:54:17
  • windbg定位死锁问题

    windbg定位死锁问题

    操作系统对死锁的描述如下: 所谓死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。 那么为什么会产生死锁呢? 1.因为系统资源不足。...

    2024-04-01 05:54:11
  • Windows下Nacos启动报错 Constructor threw exception; nested exception is ErrCode:500, ErrMsg:jmenv.tbsite.

    nacos-server-2.0.3 启动失败,查看Nacos.log如下报错: 2021-10-25 09:58:39,265 ERROR Error starting Tomcat context...

    2024-04-01 05:53:24
  • 如何用人工动鼠标的方式打开滑块验证码?

    如何用人工动鼠标的方式打开滑块验证码?

    点击关注公众号,技术干货及时送达有朋友在下方评论:他问,能否来一篇处理滑块验证码的文章。我回复说,可以一试。随后,我便搜索网上有没有类似的文章。如果遍地都是,那我也没有必要再添一份冗余。结果发现有类似...

    2024-04-01 05:53:17
  • 什么是超融合一体机?与超融合服务器是一回事吗?

    什么是超融合一体机?与超融合服务器是一回事吗?

    虽然超融合架构以其为用户带来的巨大价值,已经被越来越广泛地接受,但市场上对超融合仍然有诸多不清晰的概念和疑问,本系列文章将力求对这些概念进行逐一解释。 本篇解释大家经常问到和混淆的一个概念:超融合服务器是什么?超融合一体机是什么?两者有什么区别?下文特别整理了相关概念介绍。 首先,超融合是近几年兴起的一种新的IT 基础架构,这种架构具备以下特点: 1.符合软件定义数据中心理念,一定是通过软...

    2024-04-01 05:53:10
  • mysql 8.0.17 解压版安装教程

    mysql 8.0.17 解压版安装教程

    (2)执行mysqld --initialize命令,此时会生成一个新目录data,查看.err文件,可以看到root用户生成的随机密码;(1)D:\Program Files\mysql\data ...

    2024-04-01 05:52:22
  • Hive Create Table和Load DATA详解

    Hive Create Table和Load DATA详解

    Hive Create Table和Load DATA详解一、Hive Create Table详细讲解二、LOAD DATA 测试使用三、内部表和外部表区别Hive在使用创建表的时候,有有一系列的语...

    2024-04-01 05:52:15
  • u盘插电脑计算机卡了,电脑插U盘就卡住是怎么回事 几个步骤轻松解决电脑卡顿故障...

    u盘插电脑计算机卡了,电脑插U盘就卡住是怎么回事 几个步骤轻松解决电脑卡顿故障...

    电脑插U盘就卡住是怎么回事?对于U盘也是我们日常生活中经常需要用到的,在U盘上可以存储很多的文件,不过近日有用户反馈,电脑在插入U盘之后就会卡住,这是怎么回事?是什么原因导致的呢?又要如何操作才能解决...

    2024-04-01 05:52:09
  • Android dialog软键盘弹出顶起View 热门推荐

    此文章只为自己随手笔记,可不做参考。 前提: 需求要求点击一个按钮,弹出一个弹出框,从底部弹出,里面包含输入框和其他按钮。 一开始我一直用RelativeLayout做布局,因为需要从底部弹出,所以该布局可以很简单的把View控制在底部。但紧接着问题出来了,弹出的软键盘会遮住大部分的View, 只留输入框,而且还显示不全。一直纠结中。

    2024-04-01 05:51:27