协调过滤算法做菜品推荐spark代码
时间: 2023-06-23 12:58:46 浏览: 117
好的,以下是协同过滤算法在Spark中的代码示例,实现菜品推荐:
```python
# 导入必要的库
from pyspark.ml.evaluation import RegressionEvaluator
from pyspark.ml.recommendation import ALS
from pyspark.sql import Row
# 读取数据集
lines = spark.read.text("data/mllib/als/sample_movielens_ratings.txt").rdd
parts = lines.map(lambda row: row.value.split("::"))
ratingsRDD = parts.map(lambda p: Row(userId=int(p[0]), movieId=int(p[1]),
rating=float(p[2]), timestamp=long(p[3])))
ratings = spark.createDataFrame(ratingsRDD)
# 划分训练集和测试集
(training, test) = ratings.randomSplit([0.8, 0.2])
# 使用ALS算法训练模型
als = ALS(maxIter=5, regParam=0.01, userCol="userId", itemCol="movieId", ratingCol="rating",
coldStartStrategy="drop")
model = als.fit(training)
# 预测测试集评分
predictions = model.transform(test)
# 评估模型
evaluator = RegressionEvaluator(metricName="rmse", labelCol="rating",
predictionCol="prediction")
rmse = evaluator.evaluate(predictions)
print("Root-mean-square error = " + str(rmse))
# 为每个用户生成Top 10推荐电影
userRecs = model.recommendForAllUsers(10)
```
以上代码是基于Spark的ALS算法实现的协同过滤推荐,您可以根据自己的需求修改数据集和参数。
阅读全文