Untitled
# выполняем левое объединение events_test с top_k_pop_items по item_id, # чтобы добавить столбец avg_rating в cold_users_events_with_recs. # при совпадении по item_id значение будет взято из столбца avg_rating таблицы top_k_pop_items, # иначе — будет пропуск (NaN). cold_users_events_with_recs = \ events_test[events_test["user_id"].isin(cold_users)] \ .merge(top_k_pop_items[["item_id", "avg_rating"]], on="item_id", how="left") cold_user_items_no_avg_rating_idx = cold_users_events_with_recs["avg_rating"].isnull() cold_user_recs = cold_users_events_with_recs[~cold_user_items_no_avg_rating_idx] \ [["user_id", "item_id", "rating", "avg_rating"]] # вычисляем количество событий, для которых найдены рекомендации (где есть значение в столбце avg_rating) num_cold_user_events_with_recs = len(cold_user_recs) # вычисляем общее количество событий «холодных» пользователей. total_cold_user_events = len(cold_users_events_with_recs) # вычисляем долю событий с рекомендациями среди всех событий «холодных» пользователей fraction_with_recs = num_cold_user_events_with_recs / total_cold_user_events
Leave a Comment