Las preferencias de películas para el usuario 4
# Las preferencias son las películas que ha visto un Usuario, por ejemplo 4
preferencias <- subset(peliculasVistas, userId == 4)
# El datafrme de recomendaciones lo iniciamos vacio
recomendaciones <- data.frame(NA, NA, NA) # Vacio
recomendaciones <- recomendaciones[-1,] # Vacio
# Las pelSimilares serán las películas que son similares a las que ha visto
# Repetir el proceso para cada pelicula que haya visto
for (movieID in 1:length(preferencias$movieId)) {
pelSimilares <- subset(similitudes, movieId == preferencias[movieID,2])
pelSimilares <- sort(pelSimilares, decreasing = TRUE)
# Las columnas o películas con mayores similitudes de esa película
# La columna 1 es la movieId
# La columna 2, refleja la similitud consigo misma con valor de 1
# y las otras 4 columnas, son las mejores similitudes con otras películas
# Las mas similares que serán las recomendadas son las peliculas similares para ese usuario
massimilares <- pelSimilares[1,2:5] # A partir de la columna 2 porque la 1 es la columna movieId
laPelicula <- preferencias[movieID,2]
# Un ciclo para recorrer las peliculasmas similares de un en particular
for (i in 1:length(colnames(massimilares))) {
numeroPel <- strsplit(colnames(massimilares)[i], "X")# Cual pelicula dividiendo
if (as.numeric(numeroPel[[1]][2]) != as.numeric(laPelicula)) {
# print("Siguiente")
# print("Agregar a similares")
recomienda <- c(as.numeric(laPelicula),
as.numeric(numeroPel[[1]][2]),
massimilares[1,i])
recomendaciones <- rbind(recomendaciones, recomienda)
}
colnames(recomendaciones) <- c("Pelicula", "Recomendada", "Similitud")
}
}
recomendaciones
## Pelicula Recomendada Similitud
## 1 21 63 0.7867958
## 2 21 20 0.7125253
## 3 21 6 0.5897436
## 4 32 103 1.0000000
## 5 32 47 0.7867958
## 6 32 50 0.5897436
## 7 45 61 0.7867958
## 8 45 72 0.7867958
## 9 45 75 0.7867958
## 10 47 32 0.7867958
## 11 47 50 0.7867958
## 12 47 103 0.7867958
## 13 52 4 1.0000000
## 14 52 11 1.0000000
## 15 52 58 1.0000000
## 16 58 4 1.0000000
## 17 58 11 1.0000000
## 18 58 52 1.0000000
## 19 106 72 1.0000000
## 20 106 75 1.0000000
## 21 106 82 1.0000000
## 22 106 96 1.0000000
# Ahora a determinar los títulos de las películas
# Determinando la frecuencia, es decir, cuales películas
# aparecen más veces recomendadas, en dun data.frame
peliculasRecomendadas <- head(sort(table(recomendaciones$Recomendada),
decreasing = TRUE), 10)
peliculasRecomendadas <- as.data.frame(peliculasRecomendadas)
# Un ciclo para determinar los nombres de
# película de las que hayan sido recomendadas
nombresPel <- NULL # Vector vacio
for (i in 1:length(peliculasRecomendadas$Var1)) {
nombresPel <- rbind(nombresPel, subset(peliculas, movieId == peliculasRecomendadas$Var1[i], select = c(title)))
}
peliculasRecomendadas <- cbind(peliculasRecomendadas, nombresPel)
colnames(peliculasRecomendadas) <- c("IdPelicula", "Frecuencia", "Nombre")
Las películas recomendadas
peliculasRecomendadas
## IdPelicula Frecuencia Nombre
## 4 4 2 Waiting to Exhale (1995)
## 11 11 2 American President, The (1995)
## 47 50 2 Usual Suspects, The (1995)
## 65 72 2 Kicking and Screaming (1995)
## 68 75 2 Big Bully (1996)
## 92 103 2 Unforgettable (1996)
## 6 6 1 Heat (1995)
## 20 20 1 Money Train (1995)
## 32 32 1 Twelve Monkeys (a.k.a. 12 Monkeys) (1995)
## 44 47 1 Seven (a.k.a. Se7en) (1995)