python⼆元正态分布_【Python可视化1】Seaborn之数据分布
的呈现
Seaborn是基于matplotlib的Python可视化库。它提供了⼀个⾼级界⾯来绘制有吸引⼒的统计图形。Seaborn其实是在matplotlib的基础上进⾏了更⾼级的API封装,从⽽使得作图更加容易,不需要经过⼤量的调整就能使你的图变得精致。但应强调的是,应该把Seaborn视为matplotlib的补充,⽽不是替代物。
Seaborn的安装
>>>pip install aborn
安装完Seaborn包后,我们就开始进⼊接下来的店铺,⾸先我们介绍kdeplot的画法。
注:所有代码均是在IPython notebook中实现
kdeplot(核密度估计图)
卡布奇诺做法
核密度估计(kernel density estimation)是在概率论中⽤来估计未知的密度函数,属于⾮参数检验⽅法之⼀。通过核密度估计图可以⽐较直观的看出数据样本本⾝的分布特征。具体⽤法如下:
aborn.kdeplot(data,data2=None,shade=Fal,vertical=Fal,kernel='gau',bw='scott',
gridsize=100,cut=3,clip=None,legend=True,cumulative=Fal,shade_lowest=True,cbar=Fal, cbar_ax=None,
cbar_kws=None, ax=None, **kwargs)
我们通过⼀些具体的例⼦来学习⼀些参数的⽤法:
接吻的坏处
⾸先导⼊相应的库
%matplotlib inline #IPython notebook中的魔法⽅法,这样每次运⾏后可以直接得到图像,不再需要使⽤plt.show() import numpy as np #导⼊numpy包,⽤于⽣成数组
import aborn as sns #习惯上简写成sns
sns.t() #切换到aborn的默认运⾏配置
绘制简单的⼀维kde图像
x=np.random.randn(100) #随机⽣成100个符合正态分布的数
sns.kdeplot(x)
cut:参数表⽰绘制的时候,切除带宽往数轴极限数值的多少(默认为3)
sns.kdeplot(x,cut=0)
cumulative :是否绘制累积分布
sns.kdeplot(x,cumulative=True)
大胸脯shade:若为True,则在kde曲线下⾯的区域中进⾏阴影处理,color控制曲线及阴影的颜⾊
sns.kdeplot(x,shade=True,color="g")
vertical:表⽰以X轴进⾏绘制还是以Y轴进⾏绘制
sns.kdeplot(x,vertical=True)
⼆元kde图像
y=np.random.randn(100)
民间鬼故事>由来的意思sns.kdeplot(x,y,shade=True)
cbar:参数若为True,则会添加⼀个颜⾊棒(颜⾊帮在⼆元kde图像中才有) sns.kdeplot(x,y,shade=True,cbar=True)
民间借款合同范本接下来,我们接着学习功能更为强⼤的distplot
distplot
displot()集合了matplotlib的hist()与核函数估计kdeplot的功能,增加了rugplot分布观测条显⽰与利⽤scipy库fit拟合参数分布的新颖⽤途。具体⽤法如下:
aborn.distplot(a, bins=None, hist=True, kde=True, rug=Fal, fit=None, hist_kws=None, kde_kws=None,
rug_kws=None, fit_kws=None, color=None, vertical=Fal, norm_hist=Fal, axlabel=None, label=None, ax=None)
先介绍⼀下直⽅图(Histograms):
直⽅图⼜称质量分布图,它是表⽰资料变化情况的⼀种主要⼯具。⽤直⽅图可以解析出资料的规则性,⽐较直观地看出产品质量特性的分布状态,对于资料分布状况⼀⽬了然,便于判断其总体质量分布情况。直⽅图表⽰通过沿数据范围形成分箱,然后绘制条以显⽰落⼊每个分箱的观测次数的数据分布。
接下来还是通过具体的例⼦来体验⼀下distplot的⽤法:
sns.distplot(x,color="g")
通过hist和kde参数调节是否显⽰直⽅图及核密度估计(默认hist,kde均为True)
import matplotlib.pyplot as plt
fig,axes=plt.subplots(1,3) #创建⼀个⼀⾏三列的画布化妆品的使用顺序
sns.distplot(x,ax=axes[0]) #左图
sns.distplot(x,hist=Fal,ax=axes[1]) #中图
调皮的小闹钟sns.distplot(x,kde=Fal,ax=axes[2]) #右图
bins:int或list,控制直⽅图的划分
fig,axes=plt.subplots(1,2)
sns.distplot(x,kde=Fal,bins=20,ax=axes[0]) #左图:分成20个区间
sns.distplot(x,kde=Fal,bins=[x for x in range(4)],ax=axes[1]) #右图:以0,1,2,3为分割点,形成区间[0,1],[1,2],[2,3],区间外的值不计⼊。
rag:控制是否⽣成观测数值的⼩细条
fig,axes=plt.subplots(1,2)
sns.distplot(x,rug=True,ax=axes[0]) #左图
sns.distplot(x,ax=axes[1]) #右图
fit:控制拟合的参数分布图形,能够直观地评估它与观察数据的对应关系(⿊⾊线条为确定的分布)
from scipy.stats import *
sns.distplot(x,hist=Fal,fit=norm) #拟合标准正态分布
hist_kws, kde_kws, rug_kws, fit_kws参数接收字典类型,可以⾃⾏定义更多⾼级的样式
sns.distplot(x,kde_kws={"label":"KDE"},vertical=True,color="y")
norm_hist:若为True, 则直⽅图⾼度显⽰密度⽽⾮计数(含有kde图像中默认为True)