Files
py-grex/pygrex/explain/individual/model_based_emf.py
T
2026-05-22 10:02:10 +02:00

29 lines
1.0 KiB
Python

from .explainer import Explainer
class EMFExplainer(Explainer):
def __init__(self, model, recommendations, data):
super(EMFExplainer, self).__init__(model, recommendations, data)
def explain_recommendation_to_user(self, user_id: int, item_id: int):
"""
Measuring the contribution of each item to the recommendation.
:param user_id:
:param item_id: recommendation
:return: returns a dataframe with the contribution to the recommendation of each previously interacted with item.
"""
ratings_on_item = self.dataset[self.dataset.itemId == item_id]
similar_users = self.model.sim_users[user_id]
similar_users_ratings_on_item = ratings_on_item[
ratings_on_item.userId.isin(similar_users)
]
explanation_df = similar_users_ratings_on_item.groupby(by="rating").count()
explanation = {}
for index, row in explanation_df.iterrows():
explanation[index] = row[0]
return explanation