python - 使用用户的个人数据计算相似度?

标签 python machine-learning data-science similarity cosine-similarity

我想使用个人/组织数据(例如部门、公司、站点等)找出哪些用户彼此相似。

我有 bool 格式的数据,如下所示:

       Dep1 Dep2 Comp1 Comp2 Site1 Site2
    U1  0    1     0     1     0     1
    U2  1    0     0     1     1     0
    U3  1    0     1     0     1     0
    U4  0    1     0     1     0     1
    U5  0    1     0     1     1     0
    U6  1    0     1     0     0     1

我想选择一个用户并识别与他们相似的其他用户,以便我可以向他们推荐那些相似用户正在使用的软件/硬件。

我研究了余弦和杰卡德相似度,但在 bool 数据上计算它们时我没有看到太多帮助。

我正在使用 Python,对该语言并不陌生,但我对数据分析和机器学习相当陌生。如有任何建议,我们将不胜感激!

最佳答案

嗯,正如您已经提到的,计算 60k 个不同用户之间的相似度将是相当密集的。这将产生一个 60k*60k 行的相似矩阵,我怀疑它是否适合您的系统内存。如果可能的话,我会尝试按部门或站点等对您的用户进行分组(如果有意义的话)。然后仅将用户与其组内的用户进行比较,这样您就不必将所有 60k 与其他 60k 进行比较。

为了保持计算速度相当快,我将使用 numpy 进行矩阵乘法来执行相似度计算。您可以使用以下矩阵乘法简单地计算相等 1 的数量:

import numpy as np

df = np.random.randint(low = 2,size=(5000,3000))
similarities = df.dot(df.T)

这在我的笔记本电脑上在 60 秒内完成。结果将是一个 5000 * 5000 矩阵,其中包含 df 的所有 5000 行之间的相似性。

关于python - 使用用户的个人数据计算相似度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59681114/

相关文章:

Python后端逻辑添加MVC框架(Django)

python - 我无法从数据帧保存到 postgresql

python - 使用 Ansible 进行 Vagrant 配置 - mysql_db 找不到 PyMySQL

python - 如何在 python 中添加 L1 规范化?

machine-learning - 如何对实时数据进行特征工程?

python - 填补大数据集中的时间戳空白

python - 我如何任意告诉 Buildbot 不要为给定的更改安排构建?

machine-learning - 能够切换数据集的随机森林算法

machine-learning - 为什么神经网络的权重应该初始化为随机数?

machine-learning - 时间序列预测的最佳算法?