无法使用 Python 绘制包含二进制值的列的分布 列如下所示:

问题描述

我试图在处理不平衡之前绘制原始数据,以显示类分布和类不平衡(类是失败=0/1)2.我可能需要对两种情况下的数据都能够对其进行可视化。

列如下所示:

| failure |
|---------|
| 1       |
| 0       |
| 0       |
| 1       |
| 0       |

这是我迄今为止尝试过的:

import numpy as np
from scipy.stats.kde import gaussian_kde

def distribution_scatter(x,symmetric=True,cmap=None,size=None):
    pdf = gaussian_kde(x)    
    w = np.random.rand(len(x))    

    if symmetric:        
        w = w*2-1    
        pseudo_y = pdf(x) * w    

    if cmap:        
        plt.scatter(x,pseudo_y,c=x,cmap=cmap,s=size)    

    else:        
        plt.scatter(x,s=size)    

    return pseudo_y

结果:

enter image description here

结果的问题:

我想要图 0 和 1 的分布。为此,我认为我需要以某种方式对其进行改造。

期望的输出

enter image description here

解决方法

如果你想要一个 KDE 图,你可以从 seaborn 中检查 kdeplot

x = np.random.binomial(1,0.2,100)
sns.kdeplot(x)

输出:

picture


更新:或者 swarmplot 如果你想要散点图:

x = np.random.binomial(1,25)
sns.swarmplot(x=x)

输出:

picture2


更新 2:事实上,你的函数似乎也产生了合理的可视化:

distribution_scatter(np.random.binomial(1,100))

输出:

picture3