协作过滤火花python

问题描述 投票:2回答:1

我正在尝试仅将10行数据框保存到json。但是他没有保存10行,而是保存了所有内容。

userRecs = model.recommendForAllUsers(10)

  • 此显示10,然后我保存:
userRecs.coalesce(1).write.mode('overwrite').json("gs://imdbcc1/ML/userrecs")

但是它给了我20万条记录。我只想保存10

(training, test) = ratings.randomSplit([0.8, 0.2])
als = ALS(maxIter=10, regParam=1, userCol="user_id", itemCol="tconst", ratingCol="rating", coldStartStrategy="drop")
model = als.fit(training)
#Evaluate the model by computing the RMSE on the test data
predictions = model.transform(test)
evaluator = RegressionEvaluator(metricName="rmse", labelCol="rating", predictionCol="prediction")
rmse = evaluator.evaluate(predictions)
print("Root-mean-square error = " + str(rmse))
#Generate top 10 movie recommendations for each user
userRecs = model.recommendForAllUsers(10)
userRecs.coalesce(1).write.mode('overwrite').json("gs://imdbcc1/ML/userrecs")
json apache-spark pyspark apache-spark-sql collaborative-filtering
1个回答
2
投票
#Generate top 10 movie recommendations for each user
userRecs = model.recommendForAllUsers(10)

表示您正在接受十大电影推荐的所有用户。但所有记录将附带前十部电影推荐。

您必须在limit(10)之前将10位用户使用coalese(在数据排行前10名电影推荐上)

喜欢这样

userRecs.limit(10).coalesce(1).write.mode('overwrite').json("gs://imdbcc1/ML/userrecs")

© www.soinside.com 2019 - 2024. All rights reserved.