データを正規化する
評価行列に対して特異値分解を実行する前に、各行の平均をその行の各値から引いて「平均を引く(de-mean、中心化)」必要があります。
この演習では、これまで扱ってきた映画の評価データフレームを、Singular value decomposition を実行できるように前処理していきます。
user_ratings_df にはユーザーごとに 1 行、映画ごとに 1 列があり、すでに読み込まれています。
この演習はコースの一部です
Pythonでつくるレコメンデーションエンジン
演習の手順
- 各ユーザーが視聴したすべての映画に対して付けた平均評価を求め、
avg_ratingsとして保存します。 - それぞれの行から行平均を引き、結果を
user_ratings_centeredとして保存します。 - 最後に、
user_ratings_centeredの欠損値をすべて 0 で埋めます。 - 各列の平均を出力し、平均が引かれている(中心化されている)ことを確認します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Get the average rating for each user
avg_ratings = user_ratings_df.____(axis=1)
# Center each user's ratings around 0
user_ratings_centered = user_ratings_df.____(____, axis=1)
# Fill in all missing values with 0s
user_ratings_centered.____(0, inplace=True)
# Print the mean of each column
print(user_ratings_centered.____(axis=1))