利用机器学习创建基于位置的推荐程序

推荐系统被广泛应用于不同的应用程序中,用于预测用户对产品或服务的偏好或评价。在过去的几分钟或几小时里,你很可能在网上遇到过或与某种类型的推荐系统进行过互动。这些推荐系统有不同的类型,其中最突出的包括基于内容的过滤和协作过滤。在本文中,我们将研究基于地理位置的推荐,我们特别关注地理位置,以便利用用户的地理位置提供更相关的推荐。

为了说明基于位置的推荐器的关键方面,我们将使用 K-Means 算法和来自 Kaggle 的 Yelp 数据集执行一个简单的基于位置的推荐。数据是 JSON 文件,可以用 pandas 轻松读取。

下表显示了数据集的前 5 行。表中提供了企业坐标、评级星级和每家企业的评论数量。

探索性数据分析(EDA)与预处理

在本节中,我们将探索并预处理数据集。该数据集包含来自 yelp 用户的评论,并包含许多类别。为了简化我们的分析和对推荐模型的解释,我们将把重点放在餐馆上,您也可以选择您感兴趣的其他类别。

我们首先通过过滤所有包含 "餐馆 "一词的业务来创建一个餐馆数据帧。然后,我们绘制出餐厅星级从 1 星到 5 星的分布图。从图中可以清楚地看出,大多数餐厅的星级为 4.0 或 3.5 星,只有少数餐厅的星级为 5.0 星。

我们还可以根据评论数和星级创建一个排序数据框架,并将数据集中排名前 20 位的餐厅可视化。

这里不仅要根据星级对餐厅进行排序,还要根据餐厅的评论数量进行排序。以下是数据集中所有排名前 20 的餐厅的分布图。

最后,在进入 K-Means 聚类和基于位置的推荐之前,让我们也探索一下这些餐厅的位置,并将其可视化为一张地图。我们将使用 Plotly Express 库,该库提供了一种灵活简便的方法,可以用漂亮的底图绘制地理数据。

为了定制我们的推荐系统,我们将只关注内华达州的拉斯维加斯,因为该数据集中的餐厅数量最多。

我们为拉斯维加斯的所有餐馆绘制了放大地图。下面是拉斯维加斯所有餐厅的地图。地图的颜色基于餐厅的星级数量,而大小则表示该餐厅的评论数量。如您所见,评价较高的餐厅都集中在市中心。

K-Means 聚类

在执行 K-Means 聚类算法之前,我们首先要确定数据集的最佳聚类数量。在这里,我们使用了一种名为 Elbow 方法的技术。

弯头法可以帮助我们确定合适的聚类数量。这并不能给出准确的聚类数量,但有可能帮助我们选择聚类的数量。从下图可以看出,它有多个弯头。

在肘法的帮助下,我们选择了 5 个聚类,并对坐标执行 K-Means 聚类算法。我们还在 lasVegas 数据帧中填充了一列新内容。

最后,我们绘制了 K-Means 算法的聚类散点图。该图清晰地显示了算法的输出结果,有 5 个聚类。

基于位置的推荐

在本节中,我们将把 K 均值聚类和餐厅评级结合起来,根据用户的位置推荐餐厅。首先,让我们创建一个数据帧,根据评论数和星级对拉斯维加斯的餐厅进行排序。我们将其称为 DataFrametop_restaurants_lasVegas。

我们准备创建一个根据用户位置推荐餐厅的函数。我们创建一个根据用户位置推荐餐厅的函数。

在这里,我们的函数将接收经纬度和数据帧。函数首先会预测坐标属于哪个集群,然后进一步将数据帧限制在该集群中,并返回该集群中排名前 5 的餐馆。

这个函数很简单,只接受坐标,但我们可以进一步开发,接受其他输入,如地址或邮编。这需要一些地理编码应用程序,所以现在只需说明基于位置的推荐功能就足够了。在使用推荐函数之前,让我们先创建一个测试数据帧。

现在,我们可以将数据帧中的任何用户作为输入,使用我们的推荐函数来测试我们基于位置的简单推荐的功能。请记住,这些测试数据只是为了方便,推荐函数可以直接接受任何给定的坐标。

对于第一个用户,K-Means 算法会预测聚类,并找出该聚类中排名前 5 的餐厅并进行推荐。红点为用户所在位置,蓝点为推荐餐厅。

让我们再举一个例子,本例中的用户 3。我们的 "recommend_restaurant "函数会再次预测该用户所属的群组,并从中选出该群组中排名前 5 的餐厅。

结论

在本教程中,我们使用 Yelp 数据集演示了基于位置的 python 推荐。我们使用餐馆来展示基于位置的推荐应用。我们的推荐系统使用基于餐厅坐标的 K-Means 聚类,并且只考虑餐厅的评级(评级数和星级)来推荐餐厅。我们还可以考虑餐厅的类型来定制推荐。这一点还可以进一步发展,纳入其他输入方法,如地址或邮政编码。最后,虽然 K-means 聚类限制了推荐餐厅的范围,但我们的推荐并没有明确考虑用户与推荐餐厅之间的距离。

相关推荐
pen-ai4 分钟前
【NLP】15. NLP推理方法详解 --- 动态规划:序列标注,语法解析,共同指代
人工智能·自然语言处理·动态规划
Chaos_Wang_11 分钟前
NLP高频面试题(二十九)——大模型解码常见参数解析
人工智能·自然语言处理
Acrelhuang18 分钟前
8.3MW屋顶光伏+光储协同:上海汽车变速器低碳工厂的能源革命-安科瑞黄安南
大数据·数据库·人工智能·物联网·数据库开发
区块链蓝海18 分钟前
沉浸式体验测评|AI Ville:我在Web3小镇“生活”了一周
人工智能·web3·生活
whaosoft-14333 分钟前
51c自动驾驶~合集15
人工智能
花楸树34 分钟前
前端搭建 MCP Client(Web版)+ Server + Agent 实践
前端·人工智能
用户876128290737444 分钟前
前端ai对话框架semi-design-vue
前端·人工智能
量子位44 分钟前
稚晖君刚挖来的 90 后机器人大牛:逆袭履历堪比爽文男主
人工智能·llm
量子位1 小时前
200 亿机器人独角兽被曝爆雷,官方回应来了
人工智能·llm
机器之心1 小时前
细节厘米级还原、实时渲染,MTGS方法突破自动驾驶场景重建瓶颈
人工智能