Beräkna glesheten
Som du vet fungerar ALS bra med glesa datamängder. Låt oss se hur stor del av ratings-matrisen som faktiskt är tom.
Kom ihåg att gleshet beräknas som antalet celler i en matris som innehåller ett betyg dividerat med det totala antalet värden som matrisen skulle kunna hålla givet antalet användare och objekt (filmer). Med andra ord: dividera antalet betyg i matrisen med produkten av användare och filmer i matrisen, och subtrahera sedan resultatet från 1 – det ger oss glesheten, det vill säga andelen av ratings-matrisen som är tom.
Den här övningen är en del av kursen
Bygg rekommendationsmotorer med PySpark
Övningsinstruktioner
- Beräkna
numerator(täljaren) för glehetsmåttet genom att räkna det totala antalet betyg iratings-matrisen. - Beräkna antalet
distinct()userIdsochdistinct()movieIdsiratings-matrisen. - Beräkna
denominator(nämnaren) för glehetsmåttet genom att multiplicera antalet användare med antalet filmer iratings-matrisen. - Beräkna och skriv ut glesheten genom att dividera
numeratormeddenominator, subtrahera från 1 och multiplicera med 100.1.0används för att säkerställa att glesheten returneras som ett decimaltal och inte ett heltal.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# Count the total number of ratings in the dataset
numerator = ____.select("____").count()
# Count the number of distinct userIds and distinct movieIds
num_users = ____.select("____").____().count()
num_movies = ____.select("____").____().count()
# Set the denominator equal to the number of users multiplied by the number of movies
denominator = ____ * ____
# Divide the numerator by the denominator
sparsity = (1.0 - (____ *1.0)/____)*100
print("The ratings dataframe is ", "%.2f" % sparsity + "% empty.")