Data Preparation#

Interaction Data Format#

CoreRec expects user-item interaction data as a Pandas DataFrame with these columns:

import pandas as pd

interactions = pd.DataFrame({
    'userID': [1, 1, 2, 2, 3],
    'itemID': [101, 102, 101, 103, 102],
    'rating': [5.0, 3.0, 4.0, 2.0, 5.0],
    'timestamp': [1000, 1001, 1002, 1003, 1004],
})

Default Column Names#

CoreRec uses configurable column names with sensible defaults:

from corerec import (
    DEFAULT_USER_COL,       # "userID"
    DEFAULT_ITEM_COL,       # "itemID"
    DEFAULT_RATING_COL,     # "rating"
    DEFAULT_TIMESTAMP_COL,  # "timestamp"
)

Override column names only when your DataFrame already uses those exact names:

from corerec.engines.collaborative import SAR

# DataFrame columns must match col_* exactly (defaults: userID, itemID, rating)
interactions = pd.DataFrame({
    'userID': [1, 1, 2],
    'itemID': [101, 102, 101],
    'rating': [5.0, 3.0, 4.0],
})

model = SAR()  # defaults: col_user='userID', col_item='itemID'
model.fit(interactions)

If your raw CSV uses user_id / item_id, rename before fit():

df = df.rename(columns={'user_id': 'userID', 'movie_id': 'itemID'})
model = SAR()
model.fit(df)

Supported Data Types#

  • Explicit feedback: ratings (1-5 stars, 1-10 scale)

  • Implicit feedback: clicks, views, purchases (binary or count)

  • Sequential data: ordered user interaction histories with timestamps

Similarity Types#

For collaborative filtering models like SAR:

from corerec import (
    SIM_COSINE,            # Cosine similarity
    SIM_JACCARD,           # Jaccard similarity
    SIM_LIFT,              # Lift similarity
    SIM_COOCCURRENCE,      # Co-occurrence count
    SIM_MUTUAL_INFORMATION,# Mutual information
)