首页 > 其他分享 >汽车交易情况分析及价格预测1_EDA

汽车交易情况分析及价格预测1_EDA

时间:2023-05-13 10:47:02浏览次数:41  
标签:EDA 预测 missing numeric 汽车交易 train plt data features

一、数据简介

二手车交易记录,训练集数据15万条,测试集数据5万条。包括交易ID、汽车交易名称、汽车注册日期、车型编码、汽车品牌、车身类型、汽车已行驶公里、报价类型、二手车交易价格等信息。同时会对name、model、brand和regionCode等信息进行脱敏。

name - 汽车编码  regDate - 汽车注册时间  model - 车型编码

brand - 品牌  bodyType - 车身类型  fuelType - 燃油类型

gearbox - 变速箱  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'(根据汽车的评论、标签等大量信息得到的embedding向量)【人工构造 匿名特征】

二、数据概况

train_data.info()

三、缺失值检测

 观察缺失值的个数是否真的很大,如果很小一般选择填充,如果使用lgb等树模型可以直接空缺,让树自己去优化,但如果缺失值存在的过多、可以考虑删掉

missing = train_data.isnull().sum()
missing = missing[missing > 0]
missing.sort_values(inplace=True)
missing.plot.bar()

 

# 缺失值分布图(取出250条数据查看)
msno.matrix(train_data.sample(250))

 

四、异常值检测

train_data['notRepairedDamage'].value_counts()

‘ - ’也为空缺值,因为很多模型对nan有直接的处理,这里我们先不做处理,先替换成nan

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

 以下两个类别特征严重倾斜,不会对预测有什么帮助,故删除

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"]

 

五、预测值的分布

价格不服从正态分布,最佳拟合是无界约翰逊分布

#无界约翰逊分布
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)

 

 

 

 

六、类别特征和数字特征分析

numeric_features = ['power', 'kilometer', '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' ]

categorical_features = ['name', 'model', 'brand', 'bodyType', 'fuelType', 'gearbox', 'notRepairedDamage', 'regionCode',]

1.数字特征分析

numeric_features.append('price')
numeric_features

 数字特征之间的相关性

price_numeric = train_data[numeric_features]
correlation = price_numeric.corr()

f , ax = plt.subplots(figsize = (7, 7))

plt.title('Correlation of Numeric Features with Price',y=1,size=16)

sns.heatmap(correlation,square = True, vmax=0.8)

 

每个数字特征的分布

f = pd.melt(train_data, value_vars=numeric_features)
g = sns.FacetGrid(f, col="variable", col_wrap=4, sharex=False, sharey=False)
g = g.map(sns.distplot, "value")

 

2.类别特征分析

类别特征箱形图可视化

 

标签:EDA,预测,missing,numeric,汽车交易,train,plt,data,features
From: https://www.cnblogs.com/0chenxian0/p/17396797.html

相关文章