public code v1
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
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
|
||||
Reference in New Issue
Block a user