假设我有两个向量。我可以用什么算法来比较它们?

2024-09-27 09:30:24 发布

您现在位置:Python中文网/ 问答频道 /正文

公司1有这个向量:

['books','video','photography','food','toothpaste','burgers'] ... ...

公司2有这个向量:

^{pr2}$

假设这是一个频率分布(我可以使它成为一个元组,但太多了,无法键入)。
如您所见……这些矢量有重叠的部分。”“视频”和“摄影”似乎在两个向量之间“相似”,因为它们处于相似的位置。“书”显然是第一公司的强项。 排序和定位很重要,因为这是一个频率分布。在

你能用什么算法来解决这个问题?您可以使用哪些算法来使用这些向量为这些公司提供有价值的数据?在

我不熟悉文本挖掘和信息检索。有人能给我介绍一下关于这个问题的话题吗?在


Tags: 算法视频键入food矢量video公司books
3条回答

Is position是非常重要的,正如您所强调的,那么关键的度量将基于不同向量中相同项目之间的位置差(例如,您可以将差异的绝对值或它们的平方求和)。需要解决的一个大问题是——在一个向量中存在(比如第N个向量)而在另一个向量中完全不存在的一个项目的权重是多少。这是一个相对较小的问题吗?比如说,好像丢失的物品就在实际物品之后,还是真的,真的是个大问题?如果不进一步了解实际应用领域,那是不可能的。你可以尝试各种方法来处理这个问题,看看他们在你关心的例子中给出了什么结果!在

例如,假设“一个缺失的项目和它出现在实际项目之后大致相同”。然后,您可以将每个输入向量预处理成dict映射项到位置(如果您必须比较多对输入向量,则这是关键的优化!)公司名称:

def makedict(avector):
  return dict((item, i) for i, item in enumerate(avector))

然后,比较两种说法:

^{pr2}$

(或,abs(d),而不是最后一个语句中的平方)。为了使缺少的项目更重(使dicts,即向量,被认为是更远的地方),你可以使用两倍的长度,而不是仅仅是长度,或一些大常数,如100,在其他类似的结构程序。在

我建议你读一本叫Programming Collective Intelligence的书。
这是一本关于如何从简单数据中检索信息的好书。其中包括一些代码示例(在Python中:)

编辑: 只是回复gbjbaanb:这是Python!在

a = ['books','video','photography','food','toothpaste','burgers']
b = ['video','processor','photography','LCD','power supply', 'books']
a = set(a)
b = set(b)

a.intersection(b)
    set(['photography', 'books', 'video'])

b.intersection(a)
    set(['photography', 'books', 'video'])

b.difference(a)
    set(['LCD', 'power supply', 'processor'])

a.difference(b)
    set(['food', 'toothpaste', 'burgers'])

相关问题 更多 >

    热门问题