ПочатиПочніть безкоштовно

Порівняння всіх ваших фільмів одночасно

Обчислювати схожість Жаккара між будь‑якими двома окремими фільмами у вашому наборі даних зручно для невеликих аналізів, але на великих наборах даних це може бути повільно для формування рекомендацій.

У цій вправі ви знайдете схожість між усіма фільмами та збережете її в DataFrame для швидкого та зручного пошуку.

Коли ви обчислюєте схожість між рядками DataFrame, можна пройтися по всіх парах і рахувати їх окремо, але ефективніше скористатися функцією pdist() (pairwise distance) із scipy.

Отриманий результат можна надати потрібної прямокутної форми за допомогою squareform() із тієї ж бібліотеки. Оскільки вам потрібні значення схожості, а не відстані, слід відняти ці значення від 1.

movie_cross_table уже завантажено для вас.

Ця вправа є частиною курсу

Створення систем рекомендацій у Python

Переглянути курс

Інструкції до вправи

  • Знайдіть міри відстані Жаккара між усіма фільмами та присвойте результати змінній jaccard_similarity_array.
  • Створіть DataFrame з jaccard_similarity_array, використавши movie_genre_df.index як індекси рядків і стовпців.
  • Виведіть перші 5 рядків DataFrame і перегляньте бали схожості.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

# 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())
Редагувати та запускати код