机器学习模型:数据探索 特征工程 建模

背景:本文用于记录机器学习建模的整体思路,包括数据探索思路、可视化、特征工程等步骤
ref:https://www.kaggle.com/erikbruin/house-prices-lasso-xgboost-and-a-detailed-eda#executive-summary

Explore Data

1 数据整体情况
拿到数据的第一步,先查看数据形状shape,python下dataframe数据常用方法为describe()
查看要点:
1、查看数据条数
2、查看原始特征个数及数据格式
3、几个统计指标(均值、众数、最值、空值、分位数),查看是否具有异常值

2 探索重要特征
1、单变量分析:查看变量的分布,尤其是响应变量(label)的分布:是否为正态分布、偏态如何、是否符合预期
这一步可输出可视化图形,代码如下:

###### 复杂版 可输出数值
import seaborn as sns
plt.figure(dpi=300,figsize=(3,2))
plt.tick_params(labelsize=3) 
## 绘图
ax = sns.distplot(df.label, kde_kws=dict(linewidth=0.3))
ax.xaxis.label.set_size(3)
ax.yaxis.label.set_size(3)
## 计算相关数值
μ = df.label.mean()
sigma = df.label.std()
skew = df.label.skew() # 偏态
kurt = df.label.kurt() # 峰度
## 添加数值标注
ax.annotate('μ:%0.2f;sigma:%0.2f;skew:%0.2f;kurt:%0.2f'%(μ,sigma,skew,kurt)\
            ,(100,0.002),fontsize=3)
plt.show()

###### 简单版
df.label.hist(bins = 30)

2、双变量分析:分析响应变量与其他变量之间的相关性
python分析数据相关性方法
1)相关系数
a)np.corrcoef():可指定某两个字段,也可直接输入整个df,返回一个矩阵
b)stats.pearsonr(X,Y):需导入scipy.stats,返回相关系数和p-value,其中p-value表示不相关度
c)X.corr(Y) or df.corr():效果和a)一样,只不过这个是基于pandas的
2)散点图sns.pairplot(),hue参数可指定另一个变量作为分组,需导入seaborn包,反映两变量间分布关系
3)热力图sns.heatmap()

对于相关性较高的变量可拿出来单独分析

总结:观察数据分布的时候,不仅是将结果呈现出来,还需要分析理解,为构造特征、排除异常值、填充空值等打下基础

你可能感兴趣的:(学习日记,机器学习)