<jupyter_start><jupyter_text>Práctico 1: Recomendación de ArtistasEn este práctico trabajaremos con el conjuto de datos de [LastFM](https://grouplens.org/datasets/hetrec-2011/) para el desarrollo de un sistema de recomendación que, dado el nombre de un artista musical, devuelve una lista de artistas "similares".Para el práctico utilizaremos el conjunto de datos de LastFM que consiguieron del [notebook de instalación](./instalacion.ipynb). Se recomienda leer el [Readme](http://files.grouplens.org/datasets/hetrec2011/hetrec2011-lastfm-readme.txt) de los datos para saber más sobre que información contiene cada archivo.La idea del práctico es hacer un análisis muy sencillo del conjunto de datos y desarrollar un sistema de recomendación basado en filtrado colaborativo (usando Surpr!se), a partir de los datos existentes.<jupyter_code>import pandas as pd
artist_data = pd.read_csv("./data/lastfm/artists.dat", sep="\t")
artist_data.head()
user_artist_plays = pd.read_csv("./data/lastfm/user_artists.dat", sep="\t")
user_artist_plays.head()<jupyter_output><empty_output><jupyter_text>Ejercicio 1 - Análisis Exploratorio de DatosEn esta primera parte deberán hacer un análisis exploratorio de los datos, aprovechando toda la información brindada por el conjunto. A partir de eso podrán tener mayor idea de qué tipo de datos estarán enfrentando (describe o hist).Algunas preguntas para responder:- ¿Cuáles son los artistas que fueron más escuchados?- ¿Cómo es la distribución de cantidad de listens por user?- ¿Es posible ver el género más escuchado?<jupyter_code># Completar...<jupyter_output><empty_output><jupyter_text>Ejercicio 2 - Matriz de Usuario-ContenidoEn este ejercicio, a partir del conjunto de datos, deberán generar una matriz de usuario-contenido. Tengan en cuenta que los ratings, en este caso, son implícitos, puesto que se dan a partir de la cantidad de veces que un usuario escuchó a cierto artista.<jupyter_code># Completar...<jupyter_output><empty_output><jupyter_text>Ejercicio 3 - Entrenamiento del algoritmo de recomendaciónUtilizando las herramientas brindadas por Surpr!se, entrenen varios modelos de sistemas de recomendación basados en filtrado colaborativo a partir de su matriz de usuario-contenido. Recuerden tener en cuenta lo aprendido en la diplomatura a la hora de evaluar y validar el modelo.Si necesitan inspiración, les recomiendo revisar [este notebook con información de como entrenar un sistema de recomendación con Surpr!se](https://github.com/susanli2016/Machine-Learning-with-Python/blob/master/Building%20Recommender%20System%20with%20Surprise.ipynb).<jupyter_code># Completar...<jupyter_output><empty_output><jupyter_text>Ejercicio 4 - Sistema de recomendaciónA partir del mejor modelo de recomendación que hayan sugerido en el caso anterior, y utilizando los datos del archivo `artist.dat`, armar un sistema de recomendación sencillo que, dado un nombre de un artista, devuelva el top 10 de artistas más similares.La idea es que el sistema tome el nombre de un artista y devuelva el nombre de otros artistas (no simplemente tomar y devolver IDs). Se recomienda [revisar este notebook para inspiración (ver el paso número 5)](https://github.com/topspinj/pydata-workshop/blob/master/tutorial.ipynb).<jupyter_code># Completar...<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.06930992736077482, 'fraction_numerical': 0.009685230024213076, 'mean_word_length': 5.8997912317327765, 'pattern_counts': {'":': 0, '<': 21, '<?xml version=': 0, '>': 21, 'https://': 3, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '5', 'dir': 'jupyter-structured-clean-dedup', 'id': '85542', 'license': 'MIT', 'n_tokens_mistral': 1117, 'n_tokens_neox': 1074, 'n_words': 378, 'path': 'archive/2019/practico_1.ipynb', 'repo_name': 'feliperichard/SistemasDeRecomendacion', 'size': '3304'}