A tu propio ritmo

Explora nuestra extensa colección de cursos diseñados para ayudarte a dominar varios temas y habilidades. Ya seas un principiante o un aprendiz avanzado, aquí hay algo para todos.

Bootcamp

Aprende en vivo

Únete a nosotros en nuestros talleres gratuitos, webinars y otros eventos para aprender más sobre nuestros programas y comenzar tu camino para convertirte en desarrollador.

Próximos eventos en vivo

Catálogo de contenidos

Para los geeks autodidactas, este es nuestro extenso catálogo de contenido con todos los materiales y tutoriales que hemos desarrollado hasta el día de hoy.

Tiene sentido comenzar a aprender leyendo y viendo videos sobre los fundamentos y cómo funcionan las cosas.

Buscar en lecciones


IngresarEmpezar

Regístrate en 4Geeks

← Volver a Proyectos

Proyecto Tutorial de K Vecinos Mas Cercanos

Dificultad

  • easy

Duración promedio

2 hrs

Tecnologías

Dificultad

  • easy

Duración promedio

2 hrs

  • Comprender un dataset nuevo.
  • Modelar los datos utilizando un KNN.
  • Analizar los resultados y optimizar el modelo.

🌱 Cómo iniciar este proyecto

Sigue las siguientes instrucciones:

  1. Crea un nuevo repositorio basado en el proyecto de Machine Learning haciendo clic aquí.
  2. Abre el repositorio creado recientemente en Codespace usando la extensión del botón de Codespace.
  3. Una vez que el VSCode del Codespace haya terminado de abrirse, comienza tu proyecto siguiendo las instrucciones a continuación.

🚛 Cómo entregar este proyecto

Una vez que hayas terminado de resolver el caso práctico, asegúrate de confirmar tus cambios, haz push a tu repositorio y ve a 4Geeks.com para subir el enlace del repositorio.

📝 Instrucciones

Sistema de recomendación de películas

¿Seríamos capaces de predecir qué películas podrían ser o no un éxito comercial? Este conjunto de datos recopila parte del conocimiento de la API TMDB, que contiene solo 5000 películas del número total. Se dispone de los siguientes recursos:

  • tmdb_5000_movies:
1https://raw.githubusercontent.com/4GeeksAcademy/k-nearest-neighbors-project-tutorial/main/tmdb_5000_movies.csv
  • tmdb_5000_credits:
1https://raw.githubusercontent.com/4GeeksAcademy/k-nearest-neighbors-project-tutorial/main/tmdb_5000_credits.csv 2``` 3 4#### Paso 1: Carga del conjunto de datos 5 6Debemos cargar los dos ficheros y almacenarlos en dos estructuras de datos (DataFrames de Pandas) separadas. Por un lado, tendremos almacenada la información de las películas y sus créditos. 7 8#### Paso 2: Creación de una base de datos 9 10Crea una base de datos para almacenar los dos DataFrames en tablas distintas. A continuación, une las dos tablas con SQL (e intégralo con Python) para generar una tercera tabla que contenga información de ambas unificada. La clave a través de la cual se puede hacer la unión es el título de la película (`titulo`). 11 12Ahora, limpia la tabla generada y deja solo las siguientes columnas: 13 14- `movie_id` 15- `title` 16- `overview` 17- `genres` 18- `keywords` 19- `cast` 20- `crew` 21 22#### Paso 3: Transforma los datos 23 24Como puedes ver, hay algunas columnas con formato JSON. De cada uno de los JSONs, selecciona el atributo `name` y reemplaza las columnas `genres` y `keywords`. Para la columna `cast`, selecciona los tres primeros nombres. 25 26Las únicas columnas que quedan por modificar son `crew` (equipo) y `overview` (resumen). Para la primera columna, transfórmala para que contenga el nombre del director. Para la segunda, conviértela en una lista. 27 28Una vez hayamos terminado de procesar las columnas y que el modelo de recomendación no se confunda, por ejemplo, entre *Jennifer Aniston* y *Jennifer Conelly*, quitaremos los espacios entre las palabras. Aplica esta función a las columnas `genres`, `cast`, `crew` y `keywords`. 29 30Por último, reduciremos nuestro conjunto de datos combinando todas nuestras columnas convertidas anteriores en una sola columna llamada `tags` (que crearemos). Esta columna ahora tendrá todos los elementos separados por comas y luego las reemplazaremos por espacios en blanco. Debería quedar algo así: 31 32```py 33new_df["tags"][0] 34 35>>>>"In the 22nd century, a paraplegic Marine is dispatched to the moon Pandora on a unique mission, but becomes torn between following orders and protecting an alien civilization. Action Adventure Fantasy ScienceFiction cultureclash future spacewar spacecolony society spacetravel futuristic romance space alien tribe alienplanet cgi marine soldier battle loveaffair antiwar powerrelations mindandsoul 3d SamWorthington ZoeSaldana SigourneyWeaver JamesCameron" 36``` 37 38#### Paso 4: Construye un KNN 39 40Para resolver este problema crearemos nosotros nuestro propio KNN. Lo primero de todo es vectorizar el texto siguiendo los mismos pasos que aprendiste en la lección anterior. 41 42Una vez lo hayas hecho, tendríamos que elegir una distancia para comparar texto. En este módulo hemos visto algunas, y la única compatible con lo que queremos hacer es la `distancia coseno`: 43 44```py 45from sklearn.metrics.pairwise import cosine_similarity 46 47similarity = cosine_similarity(vectors) 48``` 49 50Con este código podremos ver la similitud existente entre nuestros vectores (representaciones vectoriales de la columna `tags`). 51 52Finalmente, podemos diseñar nuestra función de similitud basada en la distancia del coseno. Nuestra propuesta es la siguiente: 53 54```py 55def recommend(movie): 56 movie_index = new_df[new_df["title"] == movie].index[0] 57 distances = similarity[movie_index] 58 movie_list = sorted(list(enumerate(distances)), reverse = True , key = lambda x: x[1])[1:6] 59 60 for i in movie_list: 61 print(new_df.iloc[i[0]].title) 62``` 63 64De tal forma que devolveríamos las 5 películas más similares a la que introduzcamos en el título. Podríamos utilizarla como sigue: 65 66```py 67recommend("Introduce una película") 68``` 69 70> Nota: También incorporamos muestras de solución en `./solution.ipynb` que te sugerimos honestamente que solo uses si estás atascado por más de 30 minutos o si ya has terminado y quieres compararlo con tu enfoque.

Regístrate para obtener acceso a archivos y video de la solución

Lo usaremos para darte acceso a la comunidad.
¿Ya tienes una cuenta? Inicia sesión aquí.

Dificultad

  • easy

Duración promedio

2 hrs

Dificultad

  • easy

Duración promedio

2 hrs

Dificultad

  • easy

Duración promedio

2 hrs

Dificultad

  • easy

Duración promedio

2 hrs

Regístrate para obtener acceso a archivos y video de la solución

Lo usaremos para darte acceso a la comunidad.
¿Ya tienes una cuenta? Inicia sesión aquí.

Dificultad

  • easy

Duración promedio

2 hrs

Dificultad

  • easy

Duración promedio

2 hrs