Untitled

mail@pastecode.io avatar
unknown
python
a month ago
1.4 kB
1
Indexable
Never
# выполняем левое объединение 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