数据可视化 seaborn绘图(1)

seaborn是基于matplotlib的数据可视化库.提供更高层的抽象接口.绘图效果也更好.

数据可视化 seaborn绘图(1)

 

用seaborn探索数据分布

绘制单变量分布

绘制二变量分布

成对的数据关系可视化

 

绘制单变量分布

seaborn里最常用的观察单变量分布的函数是distplot()。默认地,这个函数会绘制一个直方图,并拟合一个核密度估计.如下所示:

x = np.random.normal(size=100) sns.distplot(x);

数据可视化 seaborn绘图(1)

 

 

首先解释一下啥叫核密度估计.wiki  wiki里的一大堆数学证明看着就可怕....

简单地说:所谓核密度估计,就是采用平滑的峰值函数(“核”)来拟合观察到的数据点,从而对真实的概率分布曲线进行模拟.

说人话的话,就是:我们有很多样本,但再多的样本,也是离散的.所谓核密度估计,就是根据离散采样,估计连续密度分布.   所以样本量得大,假如你就3,5个样本,还有什么好估计的.

那核密度估计的原理是啥呢?

你上网搜索的话,大概率会搜到这个:

核密度函数的原理比较简单,在我们知道某一事物的概率分布的情况下,如果某一个数在观察中出现了,我们可以认为这个数的概率密度很大,和这个数比较近的数的概率密度也会比较大,而那些离这个数远的数的概率密度会比较小。

基于这种想法,针对观察中的第一个数,我们可以用K去拟合我们想象中的那个远小近大概率密度。对每一个观察数拟合出的多个概率密度分布函数,取平均。如果某些数是比较重要的,则可以取加权平均。

说实在的,我还是觉得很难理解.......

好在,一图胜千言!

x = np.random.normal(0, 1, size=30) bandwidth = 1.06 * x.std() * x.size ** (-1 / 5.) support = np.linspace(-4, 4, 200) kernels = [] for x_i in x: kernel = stats.norm(x_i, bandwidth).pdf(support) kernels.append(kernel) plt.plot(support, kernel, color="r") sns.rugplot(x, color=".2", linewidth=3);

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyxgwz.html