1

我有一个具有相同分类列的训练数据集和测试数据集。目前,我列举了每个数据集的分类列,为每个数据集生成两组 countplot 子图,如下所示:

plt.figure(figsize=(20,20))
for i, col in enumerate(cat_features):
    plt.subplot(5,2,i+1)
    sns.countplot(x=col,data=train, order=('A','B','C','D','E','F','G','H','I','J','K','L','N'))
plt.tight_layout()

这会产生一个像这样的漂亮图形(注意,为了显示前四个空间,我裁剪了空间):

我想做的就是在测试和训练之间进行并排比较;一组子图,其中 Cat0 火车的 catplot 与 Cat0 测试并排,然后 Cat1 火车的子图 catplot 在 Cat1 测试旁边,等等。

训练数据看起来像(小子集)

cat0    cat1    cat2    cat3    cat4    cat5    cat6    cat7    cat8    
                                    
    A    B       A      A       B       D       A       E       C   
    B    A       A      A       B       B       A       E       A   
    A    A       A      C       B       D       A       B       C   
    A    A       A      C       B       D       A       E       G   
    A    B       A      A       B       B       A       E       C   

训练数据

cat0    cat1    cat2    cat3    cat4    cat5    cat6    cat7    cat8
                            
A       B       A       C       B       D       A       E       E
A       B       A       C       B       D       A       E       C
A       B       A       C       B       D       A       E       C
A       A       B       A       B       D       A       E       E
A       B       A       A       B       B       A       E       E
4

1 回答 1

0

没有一些样本数据很难知道,但您可以创建如下四个图,然后遍历它们和数据集的所需顺序,绘制到相关轴。

import matplotlib.pyplot as plt
import seaborn as sns

fig, axes = plt.subplots(ncols=2, nrows=2)

for ax, dataset in zip(axes.flatten(), [train, test, train, test]):
    sns.countplot(
      data = dataset,
      x=cat_features,
      order = ('A','B','C','D','E','F','G','H','I','J','K','L','N'),
      ax=ax)
    
plt.show()
于 2021-02-07T19:37:34.550 回答