二手车交易价格预测task2
EDA目标
探索性数据分析(EDA)目的是最大化对数据的直觉,完成这个事情的方法只能是结合统计学的图形以各种形式展现出来。通过EDA可以实现:
- 熟悉数据集,得到数据的直观表现
- 发现潜在的结构
- 提取重要的变量,了解变量间的相互关系以及变量与预测值之间的存在关系
- 处理异常值
- 检验统计假设
6.进行数据处理和特征工程步骤, 建立初步模型 - 决定最优因子的设置
- 完成对于数据的探索性分析,并对于数据进行一些图表或者文字总结
(原文链接:[https://blog.csdn.net/Leo00000001/article/details/70255071])(https://blog.csdn.net/Leo00000001/article/details/70255071)
内容介绍
1.载入各种数据科学以及可视化库:
数据科学库 pandas、numpy、scipy;
可视化库 matplotlib、seabon;
其他;
2.载入数据:
载入训练集和测试集;
简略观察数据(head()+shape);
3.数据总览:
通过describe()来熟悉数据的相关统计量
Train_data.describe()
通过info()来熟悉数据类型
Train_data.info()
4.判断数据缺失和异常
查看每列的存在nan(not a number)(缺失数据)情况
# nan可视化
missing = Train_data.isnull().sum()
missing = missing[missing > 0]
missing.sort_values(inplace=True)
missing.plot.bar()
异常值检测
5.了解预测值的分布
总体分布概况(*约翰逊分布等)
## 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)
查看skewness(偏度) and kurtosis(峰度)
## 2) 查看skewness and kurtosis
sns.distplot(Train_data[‘price’]);
print(“Skewness: %f” % Train_data[‘price’].skew())
print(“Kurtosis: %f” % Train_data[‘price’].kurt())
查看预测值的具体频数
6.特征分为类别特征和数字特征,并对类别特征查看unique分布
7.数字特征分析
相关性分析
查看几个特征得 偏度和峰值
每个数字特征得分布可视化
数字特征相互之间的关系可视化
多变量互相回归关系可视化
8.类型特征分析
unique分布
类别特征箱形图可视化
类别特征的小提琴图可视化
类别特征的柱形图可视化类别
特征的每个类别频数可视化(count_plot)
9.用pandas_profiling生成数据报告
unique函数:https://blog.csdn.net/weixin_39549734/article/details/81224567?utm_source=app&app_version=4.5.8
下表列出了一些关于缺失数据处理的函数:
【原文链接:[https://blog.csdn.net/weixin_31530761/article/details/112154846?utm_source=app&app_version=4.5.8]】(https://blog.csdn.net/weixin_31530761/article/details/112154846?utm_source=app&app_version=4.5.8)
在用Pandas读取数据或对数据做些处理之后,想要观察一下数据的时候,用head函数可以默认读取前5行的数据。
shape函数,返回的是元组,
hg.shape返回的是hg的行数和列数,
hg.shape[0]返回的是hg的行数,有几行,
hg.shape[1]返回的是hg的列数,有几列。
所有特征集均脱敏处理。
** 特征分为类别特征和数字特征,并对类别特征查看unique分布**
分离label即预测值
Y_train = Train_data[‘price’]
特征nunique分布
for cat_fea in categorical_features:
print(cat_fea + “的特征分布如下:”)
print("{}特征有个{}不同的值".format(cat_fea, Train_data[cat_fea].nunique()))
print(Train_data[cat_fea].value_counts())
数字特征分布
1.相关性分析
2.查看特征得到偏度和峰值
3.每个数字特征的分布可视化
4.数字特征相互之间的关系可视化
多变量之间的关系可视化: https://www.jianshu.com/p/6e18d21a4cad
类别特征分布
- unique分布
for fea in categorical_features:
print(Train_data[fea].nunique()) - 类别特征箱形图可视化
- 类别特征的小提琴图可视化
- 类别特征的柱形图可视化
- 类别特征的每个类别频数可视化(count_plot)