Carga del conjunto de datos MovieLens en los RDD
El filtrado colaborativo es una técnica de los sistemas de recomendación en la que se utilizan valoraciones e interacciones de usuarios con diversos productos para recomendar nuevos productos. Con la llegada del machine learning y el procesamiento paralelizado de datos en los últimos años, los sistemas de recomendación se han hecho muy populares, y se utilizan en diversas áreas, como películas, música, noticias, libros, artículos de investigación, consultas de búsqueda y etiquetas de redes sociales. En este ejercicio de 3 partes, tu objetivo es desarrollar un sistema de recomendación de películas sencillo utilizando PySpark MLlib con un subconjunto del conjunto de datos MovieLens 100k.
En la primera parte, cargarás primero los datos de MovieLens (ratings.csv
) en el RDD y de cada línea del RDD con formato userId,movieId,rating,timestamp
tendrás que asignar los datos de MovieLens al objeto Ratings (userID, productID, rating
) tras eliminar la columna de marca de tiempo y, por último, dividirás el RDD en un RDD de entrenamiento y otro de prueba.
Recuerda que tienes sc
de SparkContext disponible en tu espacio de trabajo. La variable file_path
(que es la ruta del archivo ratings.csv
) y la clase ALS (es decir, Rating
) están ya disponibles también en tu espacio de trabajo.
Este ejercicio forma parte del curso
Fundamentos de big data con PySpark
Instrucciones de ejercicio
- Carga el conjunto de datos
ratings.csv
en un RDD. - Divide el RDD utilizando
,
como delimitador. - Para cada línea del RDD, utiliza la clase
Rating()
para crear una tupla deuserID, productID, rating
. - Divide aleatoriamente los datos en datos de entrenamiento y datos de prueba (0,8 y 0,2).
Ejercicio interactivo práctico
Pruebe este ejercicio completando este código de muestra.
# Load the data into RDD
data = sc.____(file_path)
# Split the RDD
ratings = data.____(lambda l: l.split('____'))
# Transform the ratings RDD
ratings_final = ratings.____(lambda line: Rating(int(line[0]), int(____), float(____)))
# Split the data into training and test
training_data, test_data = ratings_final.____([0.8, 0.2])