Statistiche riassuntive raggruppate
In questo esercizio combineremo i metodi .groupBy() e .filter() che hai già usato per calcolare il numero min() e avg() di utenti che hanno valutato ciascun brano e il numero min() e avg() di brani valutati da ciascun utente.
Poiché ora i nostri dati includono 0 per gli elementi non ancora consumati, dovremo escluderli con .filter() quando calcoliamo statistiche riassuntive raggruppate come queste. Il dataset msd è già fornito. Le funzioni col(), min() e avg() da pyspark.sql.functions sono state importate per te.
Questo esercizio fa parte del corso
Costruire motori di raccomandazione con PySpark
Istruzioni dell'esercizio
- Come esempio, ai metodi
.filter(),.groupBy()e.count()viene applicato il datasetmsdinsieme a.select()emin()per restituire il numero più basso di valutazioni ricevute da qualsiasi brano nel dataset. Usa questo modello per calcolare il numeroavg()di valutazioni implicite ricevute dai brani inmsd. - Usando lo stesso modello, trova il numero
min()eavg()di valutazioni implicite fornite dagliuserIdnel datasetmsd.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# Min num implicit ratings for a song
print("Minimum implicit ratings for a song: ")
msd.filter(col("num_plays") > 0).groupBy("songId").count().select(min("count")).show()
# Avg num implicit ratings per songs
print("Average implicit ratings per song: ")
____.filter(____("____") > 0).groupBy("____").count().____(avg("____")).____()
# Min num implicit ratings from a user
print("Minimum implicit ratings from a user: ")
msd.____(____("num_plays") > ____).____("userId").____().select(____("____")).____()
# Avg num implicit ratings for users
print("Average implicit ratings per user: ")
____.filter(col("num_plays") > 0).____("____").____().____(____("____")).____()