我是:
pandas.DataFrame.corr
,它仅限于线性或秩
系数。在然后我想:
我直接向sns.clustermap
提供距离相关性,就像在文档示例中所做的那样,因为我对热图中的结构感兴趣,而不是像在this SO answer中那样使用距离相关矩阵来计算链接。我用这个excellent SO answer代码的修改创建了距离校正矩阵。在
当我执行:
distcorr = lambda column1, column2: dcor.distance_correlation(column1, column2)
dcor_df= df.apply(lambda col1: df.apply(lambda col2: distcorr(col1, col2)))
sns.clustermap(dcor_df, cmap="mako",
row_colors=network_colors, col_colors=network_colors,
linewidths=.75, figsize=(13, 13))
我得到了我预期的结果:
对于一些背景:我有两个数据帧,两个数据帧中都有标记为A, B, ..., P
的变量。变量是相同的(相同的测量值,相同的单位),但是测量值是在空间上分开的两个位置收集的,因此我的目标是分开进行分析,看看不同位置的变量是否以类似的方式(即,与热图中的相似结构)相关。在
来自第一个位置的数据存储在here。在
我执行以下代码:
^{pr2}$我得到了期望的(平方,对称)距离相关矩阵:
我可以用sns.heatmap
绘制为:
但是,当我试图将距离相关矩阵传递给`sns.clustermap'与:
s=sns.clustermap(rslt_1, cmap="mako", standard_scale=1, linewidths=0)
fig = plt.gcf()
fig.set_size_inches(10, 10);
我明白了:
这对我来说很奇怪,因为我希望行和列的顺序与上面修改过的文档示例中的顺序相同。除非我出去吃午饭,错过或误解了重要的事情。在
如果我像这样通过metric='correlation'
:
s=sns.clustermap(rslt_1, cmap="mako", metric='correlation',
standard_scale=1, linewidths=0)
fig = plt.gcf()
fig.set_size_inches(10, 10);
我得到了一个与对角线对称的结果,如果我“注意”了这些簇,当我以表格形式与矩阵进行比较时,它们对我更有意义:
对于存储在here的第二个位置的数据,无论我是否通过metric='correlation'
,我都会得到合理的结果(而且相当相似,尽管不完全相同):
我无法解释第一个案例中的行为。我是否遗漏了什么?在
谢谢。在
PS我使用的是Windows 10电脑。 一些信息:
目前没有回答
相关问题 更多 >
编程相关推荐