Python ALS算法火花MLlib-我如何获得我自己的;“个人推荐”;(我没有排名的电影的排名)

Python ALS算法火花MLlib-我如何获得我自己的;“个人推荐”;(我没有排名的电影的排名),python,machine-learning,pyspark,apache-spark-ml,Python,Machine Learning,Pyspark,Apache Spark Ml,我正在Azure Databricks中使用PySpark。我使用Sparks MLlib库ALS算法来预测电影收视率,这是成功的。然而,我试图添加一个数据框,其中包含我对10部随机选择的电影的评级。当我这样做的时候,我只得到我已经排名过的电影的预测排名 我希望能够使用该模型根据他们的排名获得推荐 我有执行以下任务的Spark代码: 导入数据(评级小、电影小、评级大、电影大) 将小收视率与小电影合并,将大收视率与大电影合并 同时附加到两个新数据集 删除不相关的列时间戳和类型 我现在有了一个干

我正在Azure Databricks中使用PySpark。我使用Sparks MLlib库ALS算法来预测电影收视率,这是成功的。然而,我试图添加一个数据框,其中包含我对10部随机选择的电影的评级。当我这样做的时候,我只得到我已经排名过的电影的预测排名

我希望能够使用该模型根据他们的排名获得推荐

我有执行以下任务的Spark代码:

  • 导入数据(评级小、电影小、评级大、电影大)

  • 将小收视率与小电影合并,将大收视率与大电影合并

  • 同时附加到两个新数据集

  • 删除不相关的列时间戳和类型

我现在有了一个干净的表,其中有MovieID、Title(电影名称)、UserID和排名。我将从这一点显示代码。如果你想在此之前的代码,那么我可以提交这也

  • 将数据拆分为训练集和测试集(0.80,0.20)

  • ALS算法

  • 显示预测

希望以上内容能帮助您理解我所附的代码。 我只得到我已经提交的排名预测

我已经尝试将我的排名加入到训练集中。从这里,我想得到数据集中其他电影的推荐或预测

我的尝试: 导入了一个带有我自己排名的DF。 将此(UnionAll)附加到训练集。 有预测(但仅限于我已经排名的电影)

代码:

我希望有一个数据框显示我的用户ID、电影ID、排名和预测。对于电影,我没有看到排名为N/A或Null,预测值也没有

非常感谢

#Split dataset

    training, test = All_Movies.randomSplit([0.8, 0.2])
    from pyspark.ml.recommendation import ALS

    from pyspark.ml.evaluation import RegressionEvaluator

#Set up model

    ALS = ALS(maxIter=10, regParam=0.01, userCol = "userId",itemCol="movieId", ratingCol="rating",  coldStartStrategy="drop")

#Fit model to Training set and attach personal recomendations


     model = ALS.fit(training.unionAll(PersonalDF)) #PersonalDF is my rankings

#Get Predictions for Test Set
    predictions = model.transform(test).dropna()

#All good up until here.

#Trying to get prediction rankings for my movies
    mySampledMovies = model.transform(PersonalDF) 
    mySampledMovies.registerTempTable("mySampledMovies")

    display(sqlContext.sql("select userId, movieId, rating,title, prediction from mySampledMovies"))