天池大赛第一次打卡-3.23

一、赛题数据

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

 

解读:什么是数据信息脱敏处理?[1]

数据脱敏(Data Masking),又称数据漂白、数据去隐私化或数据变形。 
   百度百科对数据脱敏的定义为:指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。在涉及客户安全数据或者一些商业性敏感数据的情况下,在不违反系统规则条件下,对真实数据进行改造并提供测试使用,如身份证号、手机号、卡号、客户号等个人信息都需要进行数据脱敏。生活中不乏数据脱敏的例子,比如我们最常见的火车票、电商收货人地址都会对敏感信息做处理,甚至女同志较熟悉的美颜、有些视频中的马赛克都属于脱敏。 

 

比赛初始阶段需要完成的事情:

1.了解赛题概况

2.了解数据概况

train.csv
SaleID- 销售样本ID
name-汽车编码
regData-汽车编码
brand-品牌
bodyType-车身类型
fuelType-燃油类型
gearbox-变速箱
power-汽车功率
kilometer-汽车行驶公里
notRepairedDamage-汽车有尚未修复风险
regioCode-看车地区编码
seller-销售方
offerType-报价类型
creatDate-广告发布时间
price-汽车价格
v_0,v_1,v_2,...v_14-15个脱敏处理的匿名特征

 

下载到的数据集有三个,其中used_car_sample_submit.csv是提醒提交答案时候答案的格式

used_car_train 意思是当前可以使用到的训练数据集

user_car_testA 意思是本地测试使用的测试数据集

test分为A,B,网站上提交评价使用的是testB

 

3.预测指标

MAE预测指标,所有对应真实标签与预测标签之间绝对值的和的平均值

这个指标应该存在bug,可以通过评价指标的bug去提高结果

对于回归问题常见的评估指标为:平均绝对误差(MAE),均方误差(MSE), 平均绝对百分误差(Mean Absolute Percentage Error)

均方根误差(Root Mean Squared Error) , R2等

 

4.分析赛题

主要用xgb、lgb、catboost、以及pandas、numpy、matplotlib、seaborn、keras等等数据挖掘常用库或者框架来进行数据挖掘任务

 

数据的输入与预测指标的使用方法:windows版本

 

 

Task2:数据特征分析

目的1:了解数据集,对数据特征进行清洗,以便数据可以在接下来的实验中使用。

目的2:探究数据变量之间的的关系,以及变量与预测值之间的关系

学习内容总结:

1.数据可视化工具:

数据科学库:pandas、numpy、scipy;

可视化库:matplotlib、seaborn;

2.数据导入

载入数据和测试集

简略观察数据,使用head()和shape两个函数

3.数据总览

通过describe()来熟悉数据的相关统计量

通过info()来熟悉数据类型

4.判断数据缺失和异常

查看数据每列NAN情况,视为数据缺失,提出相应手段

检查异常值

5.了解预测值的分布

总体分布概况(无界约翰逊分布等)

查看skewness and kur

tos

is

查看预

 

测值的具体频数

6.特征分为类别特征和数字特征,对类别特征查看unique分布

7.数字特征分析

相关性分析

查看几个特征的峰值和偏度

查看数字特征的分布可视化

数字特征相互之间的关系可视化

多变量互相回归关系可视化

8.类型特征分析

unique分布

类别特征箱形图可视化

类比特征的小提琴图可视化

类别特征的柱形图可视化类别

特征的每个类别频数可视化(count_plot)

9.用pandas_profiling生成数据报告

 

#载入各种数据科学以及可视化库
#coding:utf-8
#导入warnings包,利用过滤器来实现忽略警告语句。
import warnings
warnings.filterwarnings('ignore')

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import missingno as msno
#载入各种数据科学以及可视化库
#coding:utf-8
#导入warnings包,利用过滤器来实现忽略警告语句。
import warnings
warnings.filterwarnings('ignore')

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import missingno as msno
#载入数据集
## 1) 载入训练集和测试集;
path = './datalab/231784/'
Train_data = pd.read_csv(path+'used_car_train_20200313.csv', sep=' ')
Test_data = pd.read_csv(path+'used_car_testA_20200313.csv', sep=' ')
#载入数据集
## 1) 载入训练集和测试集;
path = './datalab/231784/'
Train_data = pd.read_csv(path+'used_car_train_20200313.csv', sep=' ')
Test_data = pd.read_csv(path+'used_car_testA_20200313.csv', sep=' ')

 

所有特征集均脱敏处理

  • name - 汽车编码
  • regDate - 汽车注册时间
  • model - 车型编码
  • brand - 品牌
  • bodyType - 车身类型
  • fuelType - 燃
  • 油类型
  • gea
  • r
  • box
  • - 变速箱
  • power - 汽车功率
  • kilometer - 汽车行驶公里
  • notRepairedDamage - 汽车有尚未修复的损坏
  • regionCode - 看车地区编码
  • seller - 销售方
  • offerType - 报价类型
  • creatDate - 广告发布时间
  • price - 汽车价格
  • v_0', 'v_1', 'v_2', 'v_3', 'v_4', 'v_5', 'v_6', 'v_7', 'v_8', 'v_9', 'v_10', 'v_11', 'v_12', 'v_13','v_14' 【匿名特征,包含v0-14在内15个匿名特征】
## 2) 简略观察数据(head()+shape)
Train_data.head().append(Train_data.tail())
Train_data.shape
Test_data.head().append(Test_data.tail())
Test_data.shape

 

#总览数据概况
## 1) 通过describe()来熟悉数据的相关统计量
Train_data.describe()
Test_data.describe()
## 2) 通过info()来熟悉数据类型
Train_data.info()

Test_data.info()


#判断数据缺失和异常

## 1) 查看每列的存在nan情况
Train_data.isnull().sum()

Test_data.isnull().sum()

# nan可视化
missing = Train_data.isnull().sum()
missing = missing[missing > 0]
missing.sort_values(inplace=True)
missing.plot.bar()

# 可视化看下缺省值
msno.matrix(Train_data.sample(250))

msno.bar(Train_data.sample(1000))

# 可视化看下缺省值
msno.matrix(Test_data.sample(250))

msno.bar(Test_data.sample(1000))


## 2) 查看异常值检测
Train_data.info()

Train_data['notRepairedDamage'].value_counts()

Train_data['notRepairedDamage'].replace('-', np.nan, inplace=True)

Train_data['notRepairedDamage'].value_counts()

Train_data.isnull().sum()

Test_data['notRepairedDamage'].value_counts()

Test_data['notRepairedDamage'].replace('-', np.nan, inplace=True)

Train_data["seller"].value_counts()

Train_data["offerType"].value_counts()

del Train_data["seller"]
del Train_data["offerType"]
del Test_data["seller"]
del Test_data["offerType"]

 

#了解预测值的分布

Train_data['price']

Train_data['price'].value_counts()

## 1) 总体分布概况(无界约翰逊分布等)
import scipy.stats as st
y = Train_data['price']
plt.figure(1); plt.title('Johnson SU')
sns.distplot(y, kde=False, fit=st.johnsonsu)
plt.figure(2); plt.title('Normal')
sns.distplot(y, kde=False, fit=st.norm)
plt.figure(3); plt.title('Log Normal')
sns.distplot(y, kde=False, fit=st.lognorm)

## 2) 查看skewness and kurtosis
sns.distplot(Train_data['price']);
print("Skewness: %f" % Train_data['price'].skew())
print("Kurtosis: %f" % Train_data['price'].kurt())

Train_data.skew(), Train_data.kurt()

sns.distplot(Train_data.skew(),color='blue',axlabel ='Skewness')

sns.distplot(Train_data.kurt(),color='orange',axlabel ='Kurtness')

## 3) 查看预测值的具体频数
plt.hist(Train_data['price'], orientation = 'vertical',histtype = 'bar', color ='red')
plt.show()

# log变换 z之后的分布较均匀,可以进行log变换进行预测,这也是预测问题常用的trick
plt.hist(np.log(Train_data['price']), orientation = 'vertical',histtype = 'bar', color ='red') 
plt.show()

 

经验总结

所给出的EDA步骤为广为普遍的步骤,在实际的不管是工程还是比赛过程中,这只是最开始的一步,也是最基本的一步。

接下来一般要结合模型的效果以及特征工程等来分析数据的实际建模情况,根据自己的一些理解,查阅文献,对实际问题做出判断和深入的理解。

最后不断进行EDA与数据处理和挖掘,来到达更好的数据结构和分布以及较为强势相关的特征


数据探索在机器学习中我们一般称为EDA(Exploratory Data Analysis):

是指对已有的数据(特别是调查或观察得来的原始数据)在尽量少的先验假定下进行探索,通过作图、制表、方程拟合、计算特征量等手段探索数据的结构和规律的一种数据分析方法。

数据探索有利于我们发现数据的一些特性,数据之间的关联性,对于后续的特征构建是很有帮助的。

  1. 对于数据的初步分析(直接查看数据,或.sum(), .mean(),.descirbe()等统计函数)可以从:样本数量,训练集数量,是否有时间特征,是否是时许问题,特征所表示的含义(非匿名特征),特征类型(字符类似,int,float,time),特征的缺失情况(注意缺失的在数据中的表现形式,有些是空的有些是”NAN”符号等),特征的均值方差情况。

  2. 分析记录某些特征值缺失占比30%以上样本的缺失处理,有助于后续的模型验证和调节,分析特征应该是填充(填充方式是什么,均值填充,0填充,众数填充等),还是舍去,还是先做样本分类用不同的特征模型去预测。

  3. 对于异常值做专门的分析,分析特征异常的label是否为异常值(或者偏离均值较远或者事特殊符号),异常值是否应该剔除,还是用正常值填充,是记录异常,还是机器本身异常等。

  4. 对于Label做专门的分析,分析标签的分布情况等。

  5. 进步分析可以通过对特征作图,特征和label联合做图(统计图,离散图),直观了解特征的分布情况,通过这一步也可以发现数据之中的一些异常值等,通过箱型图分析一些特征值的偏离情况,对于特征和特征联合作图,对于特征和label联合作图,分析其中的一些关联性。

参考链接:

[1].数据脱敏:https://blog.csdn.net/huyuyang6688/article/details/77689459/

[2].https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.12281978.0.0.68021b43qv8zV8&postId=95457

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值