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

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

为了说明基于位置的推荐器的关键方面,我们将使用 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 聚类限制了推荐餐厅的范围,但我们的推荐并没有明确考虑用户与推荐餐厅之间的距离。

相关推荐
lilu888888842 分钟前
AI代码生成器赋能房地产:ScriptEcho如何革新VR/AR房产浏览体验
前端·人工智能·ar·vr
好评笔记1 小时前
多模态论文笔记——VDT
论文阅读·深度学习·机器学习·大模型·aigc·transformer·面试八股
好评笔记1 小时前
多模态论文笔记——ViViT
论文阅读·深度学习·机器学习·计算机视觉·面试·aigc·transformer
梦云澜1 小时前
论文阅读(五):乳腺癌中的高斯图模型和扩展网络推理
论文阅读·人工智能·深度学习·学习
危险、2 小时前
Spring Boot 无缝集成SpringAI的函数调用模块
人工智能·spring boot·函数调用·springai
深度学习实战训练营2 小时前
基于迁移学习的ResNet50模型实现石榴病害数据集多分类图片预测
人工智能·分类·迁移学习
XianxinMao3 小时前
开源AI模型发布策略:平衡开放与质量的艺术
人工智能
Fxrain3 小时前
[Computer Vision]实验二:图像特征点提取
人工智能·计算机视觉
人类群星闪耀时3 小时前
用深度学习优化供应链管理:让算法成为商业决策的引擎
人工智能·深度学习·算法
小树苗1934 小时前
全面了解 Web3 AIGC 和 AI Agent 的创新先锋 MelodAI
人工智能·web3·aigc