В этом блоге мы увидим еще один способ реализации системы рекомендаций фильмов. Этот блог тоже будет очень интересным, так что без дальнейших рассуждений.

Простая интуиция этого 2-го способа заключается в том, что мы будем комбинировать основные характеристики, такие как актерский состав, режиссер, жанры и т. д., и наблюдать сходство между ними, потому что большую часть времени одни и те же режиссеры снимают похожие фильмы, похожие актеры любят выступать в некоторых фильмах. подобные конкретные типы фильмов.

Прочитайте полную статью с исходным кодом здесь —https://machinelearningprojects.net/movie-recommendation-system-2nd-way/

Давай сделаем это…

Шаг 1 — Импорт библиотек, необходимых для системы рекомендаций фильмов.

import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.metrics.pairwise import cosine_similarity

Шаг 2 — Чтение входных данных.

org_movies = pd.read_csv(‘movie_dataset.csv’)
org_movies.head(3)

Шаг 3 — Проверка столбцов наших данных.

org_movies.columns

Шаг 4 — Просто сохраняйте важные столбцы.

movies = org_movies[[ ‘genres’, ‘keywords’,’cast’, ‘title’, ‘director’]]
movies.head()
  • Мы удалим все ненужные столбцы/функции и оставим только эти 5 столбцов.

Шаг 5 — Проверка информации. наших данных.

movies.info()
  • Как видно из изображения ниже, наши данные имеют некоторые значения NULL.
  • Поэтому мы заполним эти значения NULL на следующем шаге.

Шаг 6 — Заполнение нулевых значений.

movies.fillna(‘’,inplace=True)
  • Мы просто заполняем значения NULL пустым пространством.

Шаг 7 — Снова проверка информации.

movies.info()
  • Теперь, если мы проверим еще раз, мы увидим, что теперь нет значений NULL.

Шаг 8 — Создание столбца под названием «Комбинированные функции».

movies[‘combined_features’] = movies[‘genres’] +’ ‘+ movies[‘keywords’] +’ ‘+ movies[‘cast’] +’ ‘+ movies[‘title’] +’ ‘+ movies[‘director’]
movies.head()
  • Здесь мы создали новый столбец с именем Combined_features, который будет содержать все эти объединенные функции, или мы можем сказать, что все эти строки объединены.

Шаг 9 — Обратите внимание на первую запись в столбце комбинированных функций.

movies.iloc[0][‘combined_features’]
  • Вот как выглядит первая комбинированная_функция.

Шаг 10 — Инициализация CountVectorizer.

cv = CountVectorizer()
count_matrix = cv.fit_transform(movies[‘combined_features’])

Здесь мы используем CountVectorizer(), чтобы преобразовать эти комбинированные функции в набор слов, потому что мы просто не можем работать со строками.

Шаг 11 — Поиск сходства между разными записями.

cs = cosine_similarity(count_matrix)
cs.shape
  • Здесь мы используем косинусное сходство для вычисления сходства между всеми комбинированными функциями.
  • Например, мы будем вычислять сходство между 1-м и 2-м комбинированными признаками, между 2-м и 3-м, между 1-м и 3-м и т. д.
  • И затем мы приходим к этой матрице 4803 X 4803, которая содержит сходство.

Шаг 12 — Две служебные функции.

def get_movie_name_from_index(index):
    return org_movies[org_movies['index']==index]['title'].values[0]
def get_index_from_movie_name(name):
    return org_movies[org_movies['title']==name]['index'].values[0]
  • Всего 2 полезные функции.
  • Первая функция помогает в извлечении имен из индекса.
  • Вторая функция помогает извлечь индекс из имени.

Шаг 13 — Печать всех названий фильмов.

print(list(movies[‘title’]))

Шаг 14 — Живой предиктор.

test_movie_name = input('Enter Movie name --> ')
test_movie_index = get_index_from_movie_name(test_movie_name)
movie_corrs = cs[test_movie_index]
movie_corrs = enumerate(movie_corrs)
sorted_similar_movies = sorted(movie_corrs,key=lambda x:x[1],reverse=True)
for i in range(10):
    print(get_movie_name_from_index(sorted_similar_movies[i][0]))
  • Просто введите название фильма, например. «Мстители».
  • Получите его индекс.
  • Получите его сходство со всеми другими фильмами, используя матрицу cosine_similarty.
  • Просто перечислите сходства. Этот шаг просто создаст сходство, которое было похоже на [0,001, 0,2, 0,65, 0,02…] на [(0,0,001), (1,0,2), (2,0,65), (3,0,02)…]. Он просто добавит индекс перед всеми из них.
  • Затем мы просто сортируем результаты на основе второго параметра выше, который был сходством (0-й индекс — это индекс, а 1-й индекс — это сходство).
  • А затем распечатать первые 10.
  • Мы видим, что это дает довольно хорошие результаты, поскольку если кому-то нравятся 'Мстители', ему/ей наверняка понравится Мстители: Эра Альтрона. , Железный человек 2, Капитан Америка и т. д.

Дайте мне знать, если есть какие-либо вопросы относительно системы рекомендаций фильмов, связавшись со мной по электронной почте или LinkedIn.

Чтобы узнать больше о машинном обучении, глубоком обучении, компьютерном зрении, НЛП и проектах Flask, посетите мой блог.



Для дальнейшего объяснения кода и исходного кода посетите здесь



Итак, это все для этого блога, ребята, спасибо за то, что прочитали его, и я надеюсь, что вы возьмете что-то с собой после прочтения этого и до следующего раза 👋…