一、数据简介
二手车交易记录,训练集数据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