我正在尝试可视化CNN文本分类模型中正在学习的过滤器。为此,我在卷积层之后提取了文本样本的特征图,对于3号过滤器,我得到了一个(filter_num)*(length_of_sentences)个大小的张量。
df = pd.DataFrame(-np.random.randn(50,50), index = range(50), columns= range(50))
g= sns.clustermap(df,row_cluster=True,col_cluster=False)
plt.setp(g.ax_heatmap.yaxis.get_majorticklabels(), rotation=0) # ytick rotate
g.cax.remove() # remove colorbar
plt.show()
此代码导致:
在y轴上看不到所有刻度的地方。这是必要的 因为我需要查看哪些过滤器可以学习哪些信息。在那儿 有什么方法可以正确显示y轴上的所有刻度线?
答案 0 :(得分:1)
kwargs
的 sns.clustermap
传递给sns.heatmap
,后者具有选项yticklabels
,其选项documentation表示(强调我的意思):
如果为True,则绘制数据框的列名称。如果为False,则不要绘制列名。如果类似列表,则将这些替代标签绘制为xticklabels。 如果是整数,请使用列名,但仅绘制每n个标签。如果为“自动”,请尝试密集绘制不重叠的标签。
在这里,最简单的选择是将其设置为整数,这样它将绘制每个n
标签。我们需要每个标签,因此我们希望将其设置为1
,即:
g = sns.clustermap(df, row_cluster=True, col_cluster=False, yticklabels=1)
在您的完整示例中:
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
df = pd.DataFrame(-np.random.randn(50,50), index=range(50), columns=range(50))
g = sns.clustermap(df, row_cluster=True, col_cluster=False, yticklabels=1)
plt.setp(g.ax_heatmap.yaxis.get_majorticklabels(), rotation=0) # ytick rotate
g.cax.remove() # remove colorbar
plt.show()