比較以項目為基礎與以使用者為基礎的模型
你已經看過兩種不同的 KNN 作法。第一種是項目-項目 KNN:對於使用者尚未看過的電影,用該使用者已評分之中、與目標電影最相似的 \(k\) 部電影的平均評分作為建議分數。另一種是使用者-使用者 KNN:用與目標使用者最相似的 \(k\) 位使用者對該電影的評分平均,來推測目標使用者可能給出的評分。
現在,來比較這兩種方法,並計算 user_002 會給 Forrest Gump 的評分。
user_rating_predictor 模型(根據相似使用者對該電影的評分來做預測)以及 movie_rating_predictor(根據此使用者對相似電影的評分來做預測)的程式碼都已為你起好頭。
KNeighborsRegressor 已為你匯入。
本練習屬於課程
用 Python 建立推薦引擎
練習說明
- 建立一個使用者-使用者的 K-nearest neighbors 模型,命名為
user_knn。 - 擬合
user_knn模型,然後對target_user_x進行預測。 - 以同樣方式,擬合一個項目-項目的 K-nearest neighbors 模型,命名為
movie_knn,然後對target_movie_x進行預測。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Instantiate the user KNN model
user_knn = ____()
# Fit the model and predict the target user
user_knn.____(other_users_x, other_users_y)
user_user_pred = user_knn.____(target_user_x)
print("The user-user model predicts {}".format(user_user_pred))
# Instantiate the user KNN model
movie_knn = KNeighborsRegressor()
# Fit the model on the movie data and predict
movie_knn.____(other_movies_x, other_movies_y)
item_item_pred = movie_knn.____(target_movie_x)
print("The item-item model predicts {}".format(item_item_pred))