【问题标题】:How to cluster two datasets into a single heatmap using two separate scales in Python?如何在 Python 中使用两个单独的尺度将两个数据集聚类成一个热图?
【发布时间】:2018-07-16 19:15:40
【问题描述】:

我正在尝试使用 cluster heatmap function in Seaborn.

问题在于这两个数据集来自两个不同的过程,因此它们包含不同分布的值(我的意思是,第一个数据集的值范围从 0 到 1,但第二个数据集从 1000 到 5000 )。

我的问题是:

如何对具有不同值范围的两个数据集进行聚类?有没有办法将数据集的行聚集成一个热图,并且每个数据集可能有两个比例?

这是我迄今为止尝试过的,但收效甚微:

#First, I have combined the two datasets into one dataframe object:
dataset = pd.concat([dataset_1, dataset_2], axis=0)

#Then, passed the dataframe into Seaborn's `.clustermap()` function:
sns.clustermap(data=dataset, 
    col_cluster=False)

输出:你可以注意到dataset_1的特征都被屏蔽掉了,因为数据集之间的规模差异(dataset_1dataset_2如下图所示)

知道如何解决这个问题吗?

【问题讨论】:

    标签: python matplotlib heatmap seaborn hierarchical-clustering


    【解决方案1】:

    您可以在创建 clustermap 之前使用 sklearn 的预处理库,特别是缩放器。

    文档在这里:http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.scale.html#sklearn.preprocessing.scale

    【讨论】:

    • 在这种情况下,标准化数据似乎不是很有帮助。我的意思是无法从集群热图中直观地获得有意义的模式。我认为可能是这种情况,因为dataset_2 的方差远大于dataset_1 的方差。这可能会导致估计器不准确。我从 [sklearn.preprocessing.StandardScaler 源][github.com/scikit-learn/scikit-learn/blob/a24c8b46/sklearn/…
    • 我尝试按行缩放数据集。您的意思是将dataset_2 特征单独缩放到使其比例与dataset_1 中的值比例相对匹配?谢谢
    • 是的,我就是这个意思
    猜你喜欢
    • 2019-03-31
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-18
    • 2021-12-17
    相关资源
    最近更新 更多