Spark的电影推荐项目代码
时间: 2023-10-07 13:11:05 浏览: 40
这里是一个简单的Spark电影推荐项目代码示例,包括数据准备、特征工程和模型训练:
```python
# 导入Spark库
from pyspark.sql import SparkSession
from pyspark.ml.evaluation import RegressionEvaluator
from pyspark.ml.recommendation import ALS
from pyspark.sql.functions import col
# 创建SparkSession
spark = SparkSession.builder.appName("MovieRecommendation").getOrCreate()
# 读取数据
ratings_df = spark.read.csv("ratings.csv", header=True, inferSchema=True)
movies_df = spark.read.csv("movies.csv", header=True, inferSchema=True)
# 特征工程
ratings_df = ratings_df.select("userId", "movieId", "rating")
movies_df = movies_df.select("movieId", "title")
# 拆分数据集
(training, test) = ratings_df.randomSplit([0.8, 0.2])
# 训练模型
als = ALS(maxIter=5, regParam=0.01, userCol="userId", itemCol="movieId", ratingCol="rating")
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))
# 为每个用户推荐电影
user_recs = model.recommendForAllUsers(10)
# 输出推荐结果
user_recs = user_recs.join(movies_df, user_recs.movieId == movies_df.movieId).select("userId", col("recommendations.movieId"), col("recommendations.rating"), "title")
user_recs.show()
```
上述代码假设已经有两个CSV文件:`ratings.csv`和`movies.csv`,其中`ratings.csv`包含用户对电影的评分数据,`movies.csv`包含电影的元数据。代码首先读取这些数据,并进行特征工程。然后,它将数据拆分为训练集和测试集,并使用ALS算法训练推荐模型。最后,它使用训练好的模型为每个用户推荐10部电影,并输出推荐结果。