CoveredUsers

class rectools.metrics.dq.CoveredUsers(k: int)[source]

Bases: MetricAtK

Recommendations data quality metric to calculate share of users from test interactions that are present in recommendations table and have at least one recommendation at first k positions.

Parameters

k (int) – Number of items at the top of recommendations list that will be used to calculate metric.

Examples

>>> reco = pd.DataFrame(
...     {
...         Columns.User: [1, 1, 2],
...         Columns.Item: [1, 2, 1],
...         Columns.Rank: [1, 2, 2],
...     }
... )
>>> interactions = pd.DataFrame(
...     {
...         Columns.User: [1, 2, 3, 4],
...         Columns.Item: [1, 1, 1, 1],
...     }
... )
>>> CoveredUsers(k=1).calc_per_user(reco, interactions).values
array([1, 0, 0, 0])
>>> CoveredUsers(k=2).calc_per_user(reco, interactions).values
array([1, 1, 0, 0])
Inherited-members

Parameters

k (int) –

Methods

calc(reco, interactions)

Calculate metric value from merged recommendations.

calc_per_user(reco, interactions)

Calculate metric values for all users.

Attributes

calc(reco: DataFrame, interactions: DataFrame) float[source]

Calculate metric value from merged recommendations.

Parameters
  • merged (pd.DataFrame) – Result of merging recommendations and interactions tables. Can be obtained using merge_reco function.

  • reco (DataFrame) –

  • interactions (DataFrame) –

Returns

Value of metric (average between users).

Return type

float

calc_per_user(reco: DataFrame, interactions: DataFrame) Series[source]

Calculate metric values for all users.

Parameters
  • reco (pd.DataFrame) – Recommendations table with columns Columns.User, Columns.Item, Columns.Rank.

  • interactions (pd.DataFrame) – Interactions table with columns Columns.User, Columns.Item.

Returns

Values of metric (index - user id, values - metric value for every user).

Return type

pd.Series