python - 哪个聚类距离度量可以找到最相关的项目组
问题描述
我有如下餐厅销售数据,并希望找到彼此相关的餐厅。我正在寻找一种基于彼此相关性的聚类;其中“相关性”是指“销售量、收入和客流量组合最匹配/相似的餐厅”。(注意:这是corelatedItems的后续问题)
+----------+------------+---------+----------+
| 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 |
+----------+------------+---------+----------+
解决方案
首先,将数据框的索引设置为 Location 列,以便于索引
df1 = df1.set_index('Location')
接下来,生成餐厅的所有组合以进行比较:
import itertools
pairs = list(itertools.combinations(df1.index.values, 2))
接下来,定义一个比较函数。让我们使用上一篇文章中使用的那个
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)
接下来,遍历所有对并获得比较函数的结果:
results = [(row1, row2, compare_function(df1.loc[row1], df1.loc[row2]))
for row1, row2 in pairs]
您现在拥有所有成对餐厅及其彼此之间距离的列表。
推荐阅读
- node.js - 在 Node.js 中更改 JSON 对象中的字段
- javascript - PHP 检查 cookie 是否存在、等于 NULL 或存在
- python - Fill in data elided with "..." in output from pandas.DataFrame.corr()
- django - 将 SSL 与 Gunicorn/Django/Nginx 应用程序一起使用时出现混合内容错误
- python - Pytorch 索引
- bash - 从字符串中去除前导和尾随 ansi/tput 代码
- windows - 调用 ExitProcess 时应该如何准备堆栈?
- json - 从一个 JSON 文件中查找值并在另一个文件中替换
- django - 无法使用外键关系发布数据 - Django rest
- python - 如何在 Pycharm virtualenv 中使用 tkinter?