Я создал модель ALS и назвал ее метод .transform(test_data)
.Теперь я хочу просмотреть прогнозы для данных.
userRecs.printSchema()
производит:
|-- ProductID: integer (nullable = false)
|-- recommendations: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- CustomerID: integer (nullable = true)
| | |-- rating: float (nullable = true)
Вызов userRecs.first()
приводит к зависанию процесса на этапе 4
[Stage 4:> (0 + 1) / 1]
Я неправильно обрабатываю / считываю данные?Я также не уверен, почему для вызова userRecs.first()
требуется больше обработки?
import pandas as pd
from pyspark.ml.evaluation import RegressionEvaluator
from pyspark.ml.recommendation import ALS, ALSModel
from pyspark.ml.tuning import TrainValidationSplit, ParamGridBuilder
from pyspark.context import SparkContext
from pyspark.sql.session import SparkSession
from pyspark.sql.functions import explode
sc = SparkContext('local')
spark = SparkSession(sc)
# load the model
data = pd.read_csv('matric-out-small-SMALL.csv', sep=',')
df = spark.createDataFrame(data)
(training, test) = df.randomSplit([0.8, 0.2]) # seed , 50
model = ALSModel.load("modelSaveOut")
# predict test ata
model.transform(test)
# Generate top 10 recommendations for each user
userRecs = model.recommendForAllUsers(3)
userRecs.printSchema()
userRecs.first()
Кроме того, я хотел бы знать, есть ли другой способ получить модель для предоставления прогнозов только для одной точки данных?Я считаю, что есть лучшее решение для получения прогноза на определенное значение)?