我有一个具有相同分类列的训练数据集和测试数据集。目前,我枚举每个数据集的分类列,为每个数据集生成两组 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 Train 的 catplot 与 Cat0 Test 并排,然后 Cat1 Train 的 subplot catplot 位于 Cat1 Test 旁边,等等。
训练数据看起来像(小子集)
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
答案 0 :(得分: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()