Skupinová souhrnná statistika
V tomto cvičení zkombinuješ metody .groupBy() a .filter(), které už znáš, a vypočítáš pomocí min() a avg() minimální a průměrný počet uživatelů, kteří ohodnotili každou skladbu, a minimální a průměrný počet skladeb, které každý uživatel ohodnotil.
Protože naše data teď obsahují nuly pro položky, které ještě nebyly konzumovány, je potřeba je při skupinové souhrnné statistice odfiltrovat pomocí .filter(). Dataset msd máš k dispozici. Funkce col(), min() a avg() z pyspark.sql.functions jsou již naimportované.
Toto cvičení je součástí kurzu
Tvorba doporučovacích systémů s PySparkem
Pokyny k cvičení
- Jako vzor ti poslouží příklad, ve kterém jsou na dataset
msdaplikovány metody.filter(),.groupBy()a.count()spolu s.select()amin(), které vrátí nejmenší počet hodnocení, jež v datasetu získala jakákoli skladba. Podle tohoto vzoru vypočítej průměrný (avg()) počet implicitních hodnocení skladeb v datasetumsd. - Podle stejného vzoru zjisti minimální (
min()) a průměrný (avg()) počet implicitních hodnocení, která v datasetumsdposkytla jednotliváuserId.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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).____("____").____().____(____("____")).____()