始める無料で始める

好みが近い映画を見つける

2本の映画同士の類似度を計算したのと同様に、全ユーザーの評価を使って、ある映画に最も似ている別の映画を見つけることができます。

やり方はコンテンツベースフィルタリングのときとよく似ています。

まず全映画同士の類似度スコアを計算し、その後、関心のある映画の列(その映画との類似度スコアが入った列)を取り出して並べ替え、深掘りします。

movie_ratings_centered は今回も読み込まれており、各行が映画、値には中心化した評価が入っています。

この演習はコースの一部です

Pythonでつくるレコメンデーションエンジン

コースを見る

演習の手順

  • movie_ratings_centered 内の全映画間の類似度行列を計算し、similaritiesとして保存します。
  • similarities 行列をDataFrameで包み、列名と行名には movie_ratings_centered のインデックスを設定します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

from sklearn.metrics.pairwise import cosine_similarity

# Generate the similarity matrix
similarities = ____(____)

# Wrap the similarities in a DataFrame
cosine_similarity_df = ____.____(____, index=____.____, columns=____.____)

# Find the similarity values for a specific movie
cosine_similarity_series = cosine_similarity_df.loc['Star Wars: Episode IV - A New Hope (1977)']

# Sort these values highest to lowest
ordered_similarities = cosine_similarity_series.sort_values(ascending=False)

print(ordered_similarities)
コードを編集して実行