gpt4 book ai didi

python - 使用 Pandas 或其他方式将元组列表转换为相关矩阵

转载 作者:行者123 更新时间:2023-12-04 15:17:20 26 4
gpt4 key购买 nike

所以我有这样的数据集元组:

data = ((tag1, tag2, correlation_value), (tag1, tag3, correlation_value),...,(tag1, tag n, 相关值), (tag2, tag3, 相关值),...,( tag2, tag n, 相关值),......, (tag n-1, tag n, 相关值)).

我需要从中制作一个相关矩阵。我已经有了上面由“相关值”定义的相关值。但是我没有找到合适的技术来这样做。之前的大部分问题都是关于从数据的数据帧或数据数组计算相关性(Pearson 等)。然而,在这里我已经使用单独的算法计算了相关性,我想将它放在一个相关矩阵形式的 suing pandas 中,这样我就可以可视化相关性。

相关表应如下所示:

enter image description here

我怎样才能做到这一点?使用 pd.DataFrame() 直接转换为 pandas dataframe 然后 unpivoting 不起作用,因为我留下了很多'NaN'值,因为我的元组'data'没有相同标签的条目,所以例如, 它没有 (Tag1, Tag1, correlation value) 条目。

它也没有像(标签 1,标签 2,相关值)和(标签 2,标签 1,相关值)这样的重复值。相反,它将只有(标记 1、标记 2、相关值)。

因此在使用 pd.DataFrame 的相应数据框中,我在数据框中对应于行标记 2 和列标记 1 的条目再次是 NaN 值。

我该如何解决?

谢谢。

最佳答案

我会这样做(这可能不是最优的,因为我对数据,尤其是标签了解不够):

我假设您的数据输入看起来像(长度不固定):

(('tag1', 'tag2', 0.3), ('tag1', 'tag3', 0.4), ('tag1', 'tag4', 0.5),
('tag1', 'tag5', 0.6), ('tag2', 'tag3', 0.5), ('tag2', 'tag4', 0.6),
('tag2', 'tag5', 0.7), ('tag3', 'tag4', 0.7), ('tag3', 'tag5', 0.8),
('tag4', 'tag5', 0.9))

使用 Numpy 和 Pandas:

import numpy as np
import pandas as pd

从收集标签开始(并在途中为 DataFrame 设置索引/列)。 (我想如果标签背后有一个系统,这可以优化。)

tags = []
for t1, t2, _ in data:
tags += [t1, t2]
tags = index = columns = sorted(list(set(tags)))

然后在标签和索引之间建立一个映射:

tags = dict((t, i) for i, t in enumerate(tags))

之后构建相关矩阵:

correlation = np.identity(len(tags))
for t1, t2, corr in data:
correlation[tags[t1]][tags[t2]] = corr
correlation[tags[t2]][tags[t1]] = corr

最后是 DataFrame:

df = pd.DataFrame(correlation, index=index, columns=columns)

它适用于我的示例数据。

关于python - 使用 Pandas 或其他方式将元组列表转换为相关矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64083304/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com