餐饮平台菜品智能推荐spark代码
时间: 2023-07-23 19:43:54 浏览: 112
以下是一个基于Spark的餐饮平台菜品智能推荐代码示例,使用了基于协同过滤的推荐算法:
```python
from pyspark.ml.evaluation import RegressionEvaluator
from pyspark.ml.recommendation import ALS
from pyspark.sql import Row
# 读取数据,包括用户评分和菜品信息
ratings = spark.read.text("ratings.txt").rdd
ratings = ratings.map(lambda x: Row(userId=int(x[0]), itemId=int(x[1]), rating=float(x[2])))
ratings = spark.createDataFrame(ratings)
items = spark.read.text("items.txt").rdd
items = items.map(lambda x: Row(itemId=int(x[0]), itemName=str(x[1])))
items = spark.createDataFrame(items)
# 将数据分为训练集和测试集
(training, test) = ratings.randomSplit([0.8, 0.2])
# 训练模型
als = ALS(maxIter=5, regParam=0.01, userCol="userId", itemCol="itemId", ratingCol="rating")
model = als.fit(training)
# 生成推荐列表,这里以用户id为1为例
userRecs = model.recommendForAllUsers(10)
userRecs.filter(userRecs.userId == 1).show()
# 评估模型
predictions = model.transform(test)
evaluator = RegressionEvaluator(metricName="rmse", labelCol="rating", predictionCol="prediction")
rmse = evaluator.evaluate(predictions)
print("Root-mean-square error = " + str(rmse))
```
在上述代码中,我们使用了ALS算法,其中`maxIter`参数表示迭代次数,`regParam`参数表示正则化参数。`recommendForAllUsers`方法可以生成所有用户的推荐列表,`filter`方法可以筛选出特定用户的推荐列表。`RegressionEvaluator`用于评估模型的性能,`rmse`表示均方根误差。