Začněte nyníZačněte zdarma

Porovnání všech filmů najednou

Zjišťovat Jaccardovu podobnost mezi dvěma konkrétními filmy je skvělé pro menší analýzy, ale u větších datasetů to může být pomalé.

V tomto cvičení vypočítáš podobnosti mezi všemi filmy a uložíš je do DataFrame pro rychlé a snadné vyhledávání.

Při hledání podobností mezi řádky DataFrame bys mohl/a procházet všechny dvojice a počítat je jednotlivě, ale efektivnější je použít funkci pdist() (párová vzdálenost) z knihovny scipy.

Výsledek pak můžeš přeformátovat do požadovaného obdélníkového tvaru pomocí squareform() ze stejné knihovny. Protože chceš hodnoty podobnosti, nikoli vzdálenosti, odečti výsledné hodnoty od 1.

movie_cross_table je opět načtena za tebe.

Toto cvičení je součástí kurzu

Tvorba doporučovacích systémů v Pythonu

Zobrazit kurz

Pokyny k cvičení

  • Vypočítej Jaccardovy vzdálenosti mezi všemi filmy a výsledky ulož do proměnné jaccard_similarity_array.
  • Vytvoř DataFrame z pole jaccard_similarity_array s movie_genre_df.index jako řádky i sloupci.
  • Vypiš prvních 5 řádků DataFrame a prozkoumej skóre podobnosti.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# Import functions from scipy
from scipy.spatial.distance import pdist, squareform

# Calculate all pairwise distances
jaccard_distances = ____(movie_cross_table.values, metric='____')

# Convert the distances to a square matrix
jaccard_similarity_array = 1 - ____(____)

# Wrap the array in a pandas DataFrame
jaccard_similarity_df = pd.____(jaccard_similarity_array, ____=movie_cross_table.index, ____=movie_cross_table.index)

# Print the top 5 rows of the DataFrame
print(jaccard_similarity_df.head())
Upravit a spustit kód