python - 具有高维属性的数组的相似度得分

标签 python multidimensional-array machine-learning cosine-similarity

大家好[第一次发帖,请保持温柔:)]

我正在尝试计算许多数组(数千个)之间的相似度分数,以便我可以创建相似数组的二维图(类似于 tSNE)。

数组如下: 每个数组都有许多与其关联的唯一整数(每个对象可能有 40-200 个整数):

arr1 = [1513, 2354, 1929483, 323423...]

arr2 = [4546, 847, 993847, 8457...]

...

arrN = [236, 395828, 434535, 4369...]

每个唯一整数的范围为 ~1-30,000,000。我想将每个数组与所有其他数组进行比较,以确定它们有多少个共同整数。这应该是相似性得分的基础,我想比较将产生相似性得分的 N x N 矩阵,尽管我很想听听如何将 N x N 矩阵降低到更低的维度。

感谢您的帮助,我真的不知道从哪里开始!

最佳答案

如果内存不是问题,我会将所有数组转换为集合,然后比较它们的哈希值,例如:

arr1 = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101]
arr2 = [47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149]

arr1_arr2_same = set(arr1) & set(arr2)

print("arr1 vs arr2, same elements: {}\n\tTotal: {}".format(arr1_arr2_same, len(arr1_arr2_same)))

# prints:
# arr1 vs arr2, same elements: set([97, 67, 101, 71, 73, 79, 59, 83, 53, 89, 47, 61])
#    Total: 12

您可以循环遍历数组,收集这些集合并将它们(或它们的总数)存储在所需的矩阵中。不过,不确定您到底想用它们做什么。

关于python - 具有高维属性的数组的相似度得分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44087635/

相关文章:

python - 您如何预先计算球的轨迹以及它在 Pong 游戏中的终点?

python - 将新的 Pandas DataFrame 附加到旧的 Pandas DataFrame 上,而无需对列名进行排序

python - 光束 : AfterProcessingTime cause 'NoneType' object has no attribute 'time'

c++ - 我可以通过 AF_INET 域套接字连接到 ipv6 地址吗?

php - PHP:-在多维数组中

python - 用于评估的 Tensorflow 平均绝对误差 (MAE)

php - 如何获取多维数组的所有路径

php多维数组获取值

python - 确定为什么特征在决策树模型中很重要

python - GraphLab-Create 模块未安装在 Python 3.5 (ubuntu) 上