要给出ALS模型的预测结果汇总,可以按照以下步骤进行:
from pyspark.ml.recommendation import ALS
# 定义评分矩阵
rating_matrix = spark.read.csv("ratings.csv", header=True, inferSchema=True)
# 划分训练集和测试集
(training, test) = rating_matrix.randomSplit([0.8, 0.2])
# 构建ALS模型
als = ALS(maxIter=5, regParam=0.01, userCol="userID", itemCol="itemID", ratingCol="rating")
model = als.fit(training)
predictions = model.transform(test)
from pyspark.sql.functions import avg
user_predictions = predictions.groupBy("userID").agg(avg("prediction").alias("avg_prediction"))
user_predictions.write.csv("user_predictions.csv", header=True)
完整的代码示例如下:
from pyspark.ml.recommendation import ALS
from pyspark.sql.functions import avg
# 定义评分矩阵
rating_matrix = spark.read.csv("ratings.csv", header=True, inferSchema=True)
# 划分训练集和测试集
(training, test) = rating_matrix.randomSplit([0.8, 0.2])
# 构建ALS模型
als = ALS(maxIter=5, regParam=0.01, userCol="userID", itemCol="itemID", ratingCol="rating")
model = als.fit(training)
# 使用模型对测试集中的用户进行预测
predictions = model.transform(test)
# 将预测结果按照用户进行汇总,计算每个用户的平均预测评分
user_predictions = predictions.groupBy("userID").agg(avg("prediction").alias("avg_prediction"))
# 将汇总结果保存到文件中
user_predictions.write.csv("user_predictions.csv", header=True)
在代码示例中,我们使用了一个名为"ratings.csv"的评分矩阵作为输入数据。你需要根据你的实际情况替换它。此外,还可以根据需求调整ALS模型的参数。