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

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

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

相关推荐
大模型最新论文速读5 分钟前
ProFit: 屏蔽低概率 token,解决 SFT 过拟合问题
人工智能·深度学习·机器学习·语言模型·自然语言处理
cskywit11 分钟前
VMamba环境本地适配配置
人工智能·深度学习·mamba
victory043112 分钟前
minimind SFT失败原因排查和解决办法
人工智能·python·深度学习
逐梦苍穹13 分钟前
世界模型通俗讲解:AI大脑里的“物理模拟器“
人工智能·世界模型
囊中之锥.14 分钟前
机器学习算法详解:DBSCAN 聚类原理、实现流程与优缺点分析
算法·机器学习·聚类
发哥来了18 分钟前
主流AI视频生成工具商用化能力评测:五大关键维度对比分析
大数据·人工智能·音视频
跳跳糖炒酸奶19 分钟前
基于深度学习的单目深度估计综述阅读(1)
人工智能·深度学习·数码相机·单目深度估计
yangpipi-25 分钟前
第一章 语言模型基础
人工智能·语言模型·自然语言处理
Piar1231sdafa36 分钟前
基于yolo13-C3k2-RVB的洗手步骤识别与检测系统实现_1
人工智能·算法·目标跟踪
做科研的周师兄37 分钟前
【MATLAB 实战】|多波段栅格数据提取部分波段均值——批量处理(NoData 修正 + 地理信息保真)_后附完整代码
前端·算法·机器学习·matlab·均值算法·分类·数据挖掘