gpt4 book ai didi

python-2.7 - 如何使用 itertool 进行列相交

转载 作者:行者123 更新时间:2023-11-30 09:55:53 26 4
gpt4 key购买 nike

当我计算(m)个训练示例的每个训练数据之间的杰卡德相似度时,每个训练示例都有 6 个特征(年龄、职业、性别、产品范围、产品猫和产品),形成一个 (m*m) 相似度矩阵。

我得到了不同的矩阵结果。我已经确定了问题根源,但没有针对该问题的优化解决方案。

找到下面的数据集示例:

 ID      AGE    Occupation  Gender  Product_range   Product_cat Product

1100 25-34 IT M 50-60 Gaming XPS 6610
1101 35-44 Research M 60-70 Business Latitude lat6
1102 35-44 Research M 60-70 Performance Inspiron 5810
1103 25-34 Lawyer F 50-60 Business Latitude lat5
1104 45-54 Business F 40-50 Performance Inspiron 5410

我得到的矩阵是

enter image description here

Problem Statement:

如果您看到红色框下的值,则显示样本数据集的第 (1104) 行和 (1101) 行的相似性。如果查看各自的列,这两行并不相似,但值 0.16 是因为行 (1104) 的“职业”列和行(1101) 的“product_cat”列中存在术语“Business”,这给出了当获取行的交集时,结果为 1。

我的代码只获取两行的交集而不查看列,我如何更改我的代码来处理这种情况并保持同样好的性能。

My code:

half_matrix=[]
for row1, row2 in itertools.combinations(data_set, r=2):
intersection_len = row1.intersection(row2)
half_matrix.append(float(len(intersection_len)) /tot_len)

最佳答案

最简单的方法是向所有条目添加特定于列的前缀。已解析行的示例:

row = ["ID:1100", "AGE:25-34", "Occupation:IT", "Gender:M", "Product_range:50-60", "Product_cat:Gaming", "Product:XPS 6610"]

还有很多其他方法可以解决这个问题,包括将每一行拆分为一组 k-mers 并应用基于 Jaccard 的 MinHash 算法来比较这些集合,但在您的情况下没有必要这样做。

关于python-2.7 - 如何使用 itertool 进行列相交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30144462/

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