阿里云天池课堂笔记

一、赛题背景与目的

随着社会经济的发展,二手车交易市场日益活

跃。然而,二手车的定价受到多种因素的影

响,如车辆品牌、车龄、行驶里程、车况等。因此,准确预测二手车的交易价格对买卖双方都具有重要意义。阿里云天池二手车交易价格预测赛题旨在通过机器学习方法,基于给定的二手车数据集,建立模型来预测二手车的交易价格。

二、数据读取

 

首先,需要报名参加比赛并下载比赛数据集。成功报名后可进入数据页面将数据文件下载至本地。

 

使用 Python 的 pandas 库读取数据,示例代码如下:

 

import pandas as pd

 

# 提交示例

submit_sample = pd.read_csv('used_car_sample_submit.csv') 

 

# 训练集,以空格为分隔符

df_train = pd.read_csv('used_car_train_20200313.csv', sep=' ') 

 

# 测试集,以空格为分隔符

df_test = pd.read_csv('used_car_testb_20200421.csv', sep=' ')

 

 

三、对数据字段的理解与分析

 

1. 加载所需的包

 

import pandas as pd

import numpy as np

pd.plotting.register_matplotlib_converters()

import matplotlib.pyplot as plt

%matplotlib inline

import seaborn as sns

 

 

2. 分析每个字段的取值、范围和类型

将训练集和测试集进行合并以便统一分析,同时添加一个'from'列来标记数据来源。

 

train = df_train.drop(("price"), axis=1) # 去掉价格列

test = df_test

# 检查训练集与测试集的列名完全一样

# all(train.columns == test.columns) 

train['from'] = 'train'

test['from'] = 'test'

features = pd.concat((train, test), axis=0) 

 

 

查看特征变量的缺失值和数据类型:

 

features.info()

 

 

查看各数值型特征的统计特征:

 

features.describe()

 

 

3. 绘制每个变量的分组分布图

 

绘制定量变量分布直方图:

 

cols = use_feature # 需定义 use_feature 为要分析的特征列名列表

df = features

plt.figure(figsize=(25, 30))

for i in range(len(cols)):

    plt.subplot(6, 5, i + 1)

    sns.distplot(a=df[df['from'] == 'train'][cols[i]], label="train", kde=False)

    sns.distplot(a=df[df['from'] == 'test'][cols[i]], label="test", kde=False)

    plt.title('{} by data group'.format(cols[i]))

    plt.legend()

 

 

绘制定量变量的 density 分布图:

 

cols = use_feature  

df = features

plt.figure(figsize=(25, 30))

for i in range(len(cols)):

    plt.subplot(6, 5, i + 1)

    sns.kdeplot(data=df[df['from'] == 'train'][cols[i]], label="train", shade=True)

    sns.kdeplot(data=df[df['from'] == 'test'][cols[i]], label="test", shade=True)

    plt.title('{} by data group'.format(cols[i]))

    plt.legend()

 

 

从分布图中可以观察到一些情况,例如个别变量的取值恒定,像'seller'变量在后续建模中可考虑去掉;测试集的分布与训练集基本一致。

 

4. 计算特征字段与标签的相关性

 

绘制相关系数矩阵热图:

 

plt.figure(figsize=(30, 30))

sns.heatmap(data=df_train.corr(), annot=True)

 

 

5. 选择与标签强相关的特征字段,绘制其与标签的分布关系图

 

首先找出与价格强相关的前几个特征字段,然后绘制它们与价格的联合分布图(joint plot):

 

# 选择特征字段中与标签强相关的 3 个字段,绘制其与标签的分布关系图

df_train.corr().price.abs().sort_values(ascending=False).head(4)

sns.jointplot(x=df_train['price'], y=df_train['v_3'], kind="kde")

sns.jointplot(x=df_train['price'], y=df_train['v_12'], kind="kde")

sns.jointplot(x=df_train['price'], y=df_train['v_8'], kind="kde")

 

 

四、对标签进行数据分析并进行 log 转换

 

1. 使用 pandas 对标签字段进行数据分析

 

df_train.price.describe()

df_train.price.hist()

 

 

2. 使用 log 对标签字段进行转换

 

y_log = np.log((1 + df_train['price']))

y_log.describe()

y_log.hist()

 

 

通过以上步骤,可以对阿里云天池二手车数据进行初步的分析和处理,为后续的建模和预测做准备。在实际操作中,还需要根据数据的特点和问题,进一步进行特征工程、选择合适的算法进行建模等工作。

 

此外,比赛数据可能会随着时间而更新或变化,所以在参加比赛时,还需要参考比赛官方的最新说明和要求。同时,特征工程是提高模型性能的关键步骤,例如处理缺失值、异常值,构造新的特征,进行特征筛选等,这需要根据数据特点和领域知识进行深入探索和尝试。常用的特征工程方法包括但不限于:

 

1. 数据清洗:处理缺失值、异常值等。

 

2. 特征构造:如构造统计量特征、时间特征、地理信息特征,进行非线性变换、特征组合等。

3. 特征筛选:可采用过滤式、包裹式、嵌入式等方法筛选出对结果有意义的特征。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值