首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用哪个聚类距离度量来查找相关性最强的项目组

使用哪个聚类距离度量来查找相关性最强的项目组
EN

Stack Overflow用户
提问于 2019-07-28 15:12:43
回答 1查看 79关注 0票数 0

我有如下的餐厅销售数据,并希望找到彼此相关的餐厅。我正在寻找一种基于彼此相关性的聚类;其中“相关性”意味着“销售单位、收入和客流量的组合的最匹配/相似的餐厅”。(注:这是corelatedItems的后续问题)

代码语言:javascript
复制
+----------+------------+---------+----------+
| Location | Units Sold | Revenue | Footfall |
+----------+------------+---------+----------+
| Loc - 01 |        100 | 1,150   |       85 |
| Loc - 02 |        100 | 1,250   |       60 |
| Loc - 03 |         90 | 990     |       90 |
| Loc - 04 |        120 | 1,200   |       98 |
| Loc - 05 |        115 | 1,035   |       87 |
| Loc - 06 |         89 | 1,157   |       74 |
| Loc - 07 |        110 | 1,265   |       80 |
+----------+------------+---------+----------+
EN

回答 1

Stack Overflow用户

发布于 2019-07-29 04:39:48

首先,将dataframe的索引设置为Location列,以便于索引

代码语言:javascript
复制
df1 = df1.set_index('Location')

接下来,生成要比较的餐厅的所有组合:

代码语言:javascript
复制
import itertools
pairs = list(itertools.combinations(df1.index.values, 2))

接下来,定义一个比较函数。让我们使用上一篇文章中使用的那个

代码语言:javascript
复制
import numpy as np
def compare_function(row1, row2):
    return np.sqrt((row1['Units Sold']-row2['Units Sold'])**2 + 
           (row1['Revenue']- row2['Revenue'])**2 + 
           (row1['Footfall']- row2.loc[0, 'Footfall'])**2)

接下来,遍历所有对并获得比较函数的结果:

代码语言:javascript
复制
results = [(row1, row2, compare_function(df1.loc[row1], df1.loc[row2]))
      for row1, row2 in pairs]

现在,您有了所有restuarant对的列表以及它们彼此之间的距离。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57238712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档