ML入门——EDA探索性数据分析(中)(Seaborn)
本系列其他全部链接:
ML入门——EDA探索性数据分析(上)
ML入门——EDA探索性数据分析(中)(Seaborn)
ML入门——EDA探索性数据分析(下)(特征工程)
image前言:Seaborn是基于matplotlib的图形可视化python包。它提供了一种高度交互式界面,便于用户能够做出各种有吸引力的统计图表。整理了一下常用的seaborn的api,后续随时补充到这里吧!
1. 单变量数据——displot(直方图/灰度图)
sns.distplot(x,kde=True)
默认情况下,kde
的值为True
-
bins=20
来调节更精细的; -
rug=True
配合着实例来看(一个个小线段) -
fit=stats.gamma
这里就是拟合其他的分布函数 -
KDE:kernal density estimate(核密度估计,后续详细展开)
2. 双变量数据——jointplot(散点图)
双变量的数据分析,散点图。(同时把两个变量的分布也呈现出来)
sns.jointplot(x='x',y='y',data=df)
双变量的数据分析,六角箱图(当数据非常大的时候)
sns.jointplot(x=x,y=y,kind='hex')
双变量的数据分析,核密度估计(画出来的等高线图)
sns.jointplot(x=x,y=y,kind='kde')
3. 多变量数据——pairplot
多变量的数据分析,两两之间的变量关系
-
sns.pairplot(df)
当数据的维度非常大的时候,建议
loc
出比较关注的列;其中对角线表示的是单变量的灰度图
-
g = sns.PairGrid(pd)
表示先按照维度n,给出n*n的格子
g.map_diag(sns.kdeplot)
对角线画什么内容g.map_offdiag(sns.kdeplot, n_levels=20)
对角线画什么内容,n_levels
表示的是等高线的数量
4. 连续变量关联分析——lmplot
默认的为:散点图 + 线性回归 + 95%置信区间
4.1 连续值*连续值
sns.lmplot(x="xxx",y="xxx",data=df)
这里参数x
,y
分别是对应的x轴和y轴的标签
4.2 连续值(y)*离散值(x)
离散取值上用均值和置信区间代替离散点
sns.lmplot(x="xx",y='xx',data=df,x_estimator=np.mean,ci=95)
4.3 高阶拟合
order=2
就是拟合的阶数,默认是的1阶线性的
4.4 异常值
robust=True
依照一定的方式剔除异常值(但是并不是很靠谱的)
4.5 离散值(y)*连续值(x)
二值回归,就是无论x取什么,y值的取值只有2种:
logistic=True
逻辑回归
-
逻辑回归补充
将上面式子拆解成2个式子一下,就是:
LR模型可以被认为就是一个被Sigmoid函数(logistic方程)所归一化后的线性回归模型!
逻辑回归(Logistic Regression, LR)模型其实仅在线性回归的基础上,套用了一个逻辑函数,
4.6 做分组
hue="xxx"
注意:这里的对象一定是离散的,只有离散的才能做得了分组
hue="xxx",row="xxx",col="xxx"
添加更多的条件
5. 离散变量分析
5.1 分组柱状图——barplot
sns.barplot(x='xxx',y='xxx',hue='fff',data=df)
这里是按照hue的这一维度进行分组,然后,默认画出均值,以及errobar(置信区间)
- 参数
ci
是打开的;如果不需要,则ci=None
5.2 分类散点图——stripplot
sns.stripplot(x='xxx',y='xxx',hue='fff',data=df)
-
jitter = True
这里给重叠在一起的散点做一些抖动
5.3 蜂群图——swarmplot
其实就是把stripplot的贴在一起的散点展开来了
sns.swarmplot(x='xxx',y='xxx',hue='fff',data=df)
5.4 箱线图——boxplot
上边缘、上四分位数、中位数、下四分位数、下边缘
sns.boxplot(x="day", y="total_bill", hue="time", data=tips)
5.5 提琴图——violinplot
sns.violinplot(x="day", y="total_bill", hue="time", data=tips)
-
非对称提琴图
sns.violinplot(x="day", y="total_bill", hue="sex", data=tips, split=True, inner="stick")
-
split=True
这样得出的就是将两个提琴图各取一半拼接而成 -
注意1:
hue
的这个维度必须是二值的 -
注意2:
imageinner='stick'
这个是将实例用短线划在里面
-
5.6 灰度柱状图——countplot
其对应的数值就是pandas中的value_counts
sns.countplot(x='desk',data=pd)
5.7 factorplot
通过kind指定想要画的什么类型的图,应该不太常用,不好用!
sns.factorplot(x="day", y="total_bill", hue="smoker", col="time", data=tips, kind="swarm")
5.8 PairGrid
g = sns.PairGrid(data,x_var=['x','x','x'],y_var=['y','y','y'])
g.map(sns.violinplot)
其实就是先创建格子,然后,map给各个子图怎么画的指令