Предсказания для возврата ALS [] в PySpark - PullRequest
0 голосов
/ 09 марта 2019

Я пытаюсь прочитать из моего набора данных, который имеет три столбца User, Repository и Number of Stars.

В работе [10]

lines = spark.read.text("Dataset.csv").rdd
print(lines.take(10))

Out [10]

[Row(value='0,0,0,290'), Row(value='1,1,1,112'), Row(value='2,2,2,87.8'), Row(value='3,3,3,69.7'), Row(value='4,4,4,65.7'), Row(value='5,5,5,62'), Row(value='6,6,6,61.6'), Row(value='7,7,7,60.7'), Row(value='8,8,8,57.7'), Row(value='9,9,9,56.2')]

В работе [10]

# Need to convert p[1] from str to int
parts = lines.map(lambda row: row.value.split(","))


print(parts.take(2))

Out [11]

    [['0', '0', '0', '290'], ['1', '1', '1', '112']]

В [12]

# RDD mapped as int and float from Dataset

ratingsRDD = parts.map(lambda p: Row(userId=int(p[1]),repoId=int(p[2]),repoCount=float(p[3])))
ratings = spark.createDataFrame(ratingsRDD)
print(ratings.head(10))

Из [12] * * тысяча двадцать один

    [Row(repoCount=290.0, repoId=0, userId=0), Row(repoCount=112.0, repoId=1, userId=1), Row(repoCount=87.8, repoId=2, userId=2), Row(repoCount=69.7, repoId=3, userId=3), Row(repoCount=65.7, repoId=4, userId=4), Row(repoCount=62.0, repoId=5, userId=5), Row(repoCount=61.6, repoId=6, userId=6), Row(repoCount=60.7, repoId=7, userId=7), Row(repoCount=57.7, repoId=8, userId=8), Row(repoCount=56.2, repoId=9, userId=9)]

В работе [13]

(training, test) = ratings.randomSplit([0.8, 0.2])

В работе [14]:

# Build the recommendation model using ALS on the training data
# Cold start strategy is set to '"drop" to make sure there is no NaN evaluation metrics which would result in error.
als = ALS(maxIter=5, regParam=0.01, userCol="userId", itemCol="repoId", ratingCol="repoCount"
        ,coldStartStrategy="drop") #Cold-start is set to DROP
model = als.fit(training)

В [15]

#Evaluate the model by computing the RMSE on the test data
predictions = model.transform(test)
type(predictions)

predictions.show(3)

Out [15]

    +---------+------+------+----------+
    |repoCount|repoId|userId|prediction|
    +---------+------+------+----------+
    +---------+------+------+----------+

Моя модель дает значения NULL. Есть ли проблема в моем наборе данных или неправильные предположения об обучении.

Обратите внимание, что мой ratingCol в ALS - это число звезд, которое является явным, а не неявным рейтингом.

...