Машинное обучение - страница 17
sim_scores = sorted(sim_scores, key=lambda x: x[1], reverse=True)
sim_scores = sim_scores[1:top_n+1]
movie_indices = [i[0] for i in sim_scores]
return data['title'].iloc[movie_indices]
# Пример использования функции для получения рекомендаций
movie_title = 'The Dark Knight Rises'
recommendations = get_recommendations(movie_title, cosine_sim, data)
print(f"Рекомендации для фильма '{movie_title}':")
print(recommendations)
```
Программа выполняет следующие шаги:
1. Импортируются необходимые библиотеки. Библиотека `pandas` используется для работы с данными в виде таблицы, а библиотеки `TfidfVectorizer` и `cosine_similarity` из модуля `sklearn.feature_extraction.text` и `sklearn.metrics.pairwise` соответственно используются для работы с текстовыми данными и вычисления сходства между ними.
2. Загружаются данные о фильмах из файла 'movies.csv' с помощью функции `read_csv()` из библиотеки `pandas`. Данные обычно содержат информацию о фильмах, включая их названия, описания и другие атрибуты.
3. Создается объект `TfidfVectorizer`, который преобразует текстовые описания фильмов в числовые векторы с использованием метода TF-IDF. TF-IDF (Term Frequency-Inverse Document Frequency) – это статистическая мера, используемая для оценки важности термина в документе. Он позволяет выделить ключевые слова и характеристики фильмов.
4. С помощью метода `fit_transform()` объекта `TfidfVectorizer` преобразуется список описаний фильмов в матрицу TF-IDF. Эта матрица представляет собой числовое представление описаний фильмов, где каждый столбец соответствует определенному термину, а каждая строка – конкретному фильму.
5. Вычисляется матрица сходства между фильмами с использованием метода `cosine_similarity()` из модуля `sklearn.metrics.pairwise`. Косинусное сходство измеряет угол между двумя векторами и предоставляет меру их сходства. В данном случае, матрица сходства показывает степень сходства между каждой парой фильмов на основе их описаний.
6. Определяется функция `get_recommendations()`, которая принимает название фильма, матрицу сходства и данные о фильмах. Внутри функции происходит следующее:
– Создается объект `pd.Series` с индексами, соответствующими названиям фильмов и значениями, соответствующими их индексам в данных.
– Получается индекс выбранного фильма.
– Вычисляется список схожести выбранного фильма с остальными фильмами.
– Список сортируется по убыванию схожести.
– Выбираются топ-N фильмов на основе сходства.
– Возвращается список рекомендуемых фильмов.
7. Запрашивается у пользователя название фильма, для которого необходимо получить рекомендации.
8. Вызывается функция `get_recommendations()` с передачей ей названия фильма, матрицы сходства и данных о фильмах.
9. Выводятся на экран рекомендованные фильмы.
Программа использует алгоритм контентной фильтрации на основе TF-IDF и косинусного сходства для рекомендации фильмов на основе их текстовых описаний. Она преобразует текстовые данные в числовые векторы с использованием TF-IDF и затем вычисляет сходство между фильмами. Рекомендуемые фильмы выбираются на основе сходства с выбранным фильмом. Это позволяет предлагать пользователю фильмы, которые имеют схожие характеристики и описания с фильмами, которые он предпочитает.
Глава 3: Подготовка данных для машинного обучения
Качество данных определяет качество решений. Тщательная подготовка данных – залог успешного машинного обучения и эффективного бизнеса.