def recommend_k_fastai(model, test, train): with Timer() as t: total_users, total_items = model.data.train_ds.x.classes.values() total_items = total_items[1:] total_users = total_users[1:] test_users = test[DEFAULT_USER_COL].unique() test_users = np.intersect1d(test_users, total_users) users_items = cartesian_product(test_users, total_items) users_items = pd.DataFrame( users_items, columns=[DEFAULT_USER_COL, DEFAULT_ITEM_COL]) training_removed = pd.merge( users_items, train.astype(str), on=[DEFAULT_USER_COL, DEFAULT_ITEM_COL], how="left", ) training_removed = training_removed[ training_removed[DEFAULT_RATING_COL].isna()][[ DEFAULT_USER_COL, DEFAULT_ITEM_COL ]] topk_scores = score( model, test_df=training_removed, user_col=DEFAULT_USER_COL, item_col=DEFAULT_ITEM_COL, prediction_col=DEFAULT_PREDICTION_COL, top_k=DEFAULT_K, ) return topk_scores, t
def predict_fastai(model, test): with Timer() as t: preds = score(model, test_df=test, user_col=DEFAULT_USER_COL, item_col=DEFAULT_ITEM_COL, prediction_col=DEFAULT_PREDICTION_COL) return preds, t
def recommend_k_fastai(model, test, train): with Timer() as t: total_users, total_items = model.data.train_ds.x.classes.values() total_items = total_items[1:] total_users = total_users[1:] test_users = test[DEFAULT_USER_COL].unique() test_users = np.intersect1d(test_users, total_users) users_items = cartesian_product(test_users, total_items) users_items = pd.DataFrame(users_items, columns=[DEFAULT_USER_COL, DEFAULT_ITEM_COL]) training_removed = pd.merge(users_items, train.astype(str), on=[DEFAULT_USER_COL, DEFAULT_ITEM_COL], how='left') training_removed = training_removed[training_removed[DEFAULT_RATING_COL].isna()][[DEFAULT_USER_COL, DEFAULT_ITEM_COL]] topk_scores = score(model, test_df=training_removed, user_col=DEFAULT_USER_COL, item_col=DEFAULT_ITEM_COL, prediction_col=DEFAULT_PREDICTION_COL, top_k=DEFAULT_K) return topk_scores, t
test_users = data_test[USER].unique() test_users = np.intersect1d(test_users, total_users) #st.write("Test Users:",test_users) users_items = cartesian_product(np.array(test_users),np.array(total_items)) users_items = pd.DataFrame(users_items, columns=[USER,ITEM]) # st.write("Users:",users_items) training_removed = pd.merge(users_items, data_train.astype(str), on=[USER, ITEM], how='left') training_removed = training_removed[training_removed['Rating'].isna()][[USER,ITEM]] # st.write("Training:",training_removed) start_time = time.time() # st.write("Start Time:",start_time) top_k_scores = score(learner, test_df=training_removed, user_col=USER, item_col=ITEM, prediction_col=PREDICTION) #st.write("TOP K SCORES:",top_k_scores) test_time = time.time() - start_time # st.write("Test_Time:",test_time) print("Took {} seconds for {} predictions.".format(test_time, len(training_removed))) top_k_scores[USER] = top_k_scores['UserId'] top_k_scores[ITEM] = top_k_scores['SnackId'] top_k_scores[PREDICTION] = top_k_scores['Prediction'] top_k_scores.head() # st.write("Top k Scores:",top_k_scores) data_test.head()