美文网首页机器学习
ML入门——EDA探索性数据分析(中)(Seaborn)

ML入门——EDA探索性数据分析(中)(Seaborn)

作者: 傻狗爱睡觉 | 来源:发表于2019-07-23 00:34 被阅读0次

本系列其他全部链接:
ML入门——EDA探索性数据分析(上)
ML入门——EDA探索性数据分析(中)(Seaborn)
ML入门——EDA探索性数据分析(下)(特征工程)

前言:Seaborn是基于matplotlib的图形可视化python包。它提供了一种高度交互式界面,便于用户能够做出各种有吸引力的统计图表。整理了一下常用的seaborn的api,后续随时补充到这里吧!

image

1. 单变量数据——displot(直方图/灰度图)

sns.distplot(x,kde=True)默认情况下,kde的值为True

  • bins=20来调节更精细的;

  • rug=True配合着实例来看(一个个小线段)

  • fit=stats.gamma这里就是拟合其他的分布函数

  • KDE:kernal density estimate(核密度估计,后续详细展开)

    \hat{f}_n(x)=\frac{1}{n}\sum^{n}_{i=1}K_{h}(x-x_{i})=\frac{1}{nh}\sum^{n}_{i=1}K(\frac{x-x_{i}}{h})

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逻辑回归

  • 逻辑回归补充
    f(x)=\frac{1}{1+e^{-\theta^{T}x}}

    将上面式子拆解成2个式子一下,就是:

    f(z)=\frac{1}{1+e^{-z}}

    z(x)=\theta^{T}x=\theta_{0}+\theta_{1}x_{1}+\theta_{2}x_{2}+...+\theta_{n}x_{n}

    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
image

5.2 分类散点图——stripplot

sns.stripplot(x='xxx',y='xxx',hue='fff',data=df)

image
  • jitter = True这里给重叠在一起的散点做一些抖动

5.3 蜂群图——swarmplot

其实就是把stripplot的贴在一起的散点展开来了

sns.swarmplot(x='xxx',y='xxx',hue='fff',data=df)

image

5.4 箱线图——boxplot

上边缘、上四分位数、中位数、下四分位数、下边缘

sns.boxplot(x="day", y="total_bill", hue="time", data=tips)

image

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:inner='stick'这个是将实例用短线划在里面

      image

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给各个子图怎么画的指令

相关文章

网友评论

    本文标题:ML入门——EDA探索性数据分析(中)(Seaborn)

    本文链接:https://www.haomeiwen.com/subject/djhnlctx.html