Если вы хотите создать разреженную матрицу после ее использования в вашей модели LightFM, я думаю, вам следует использовать объект Dataset , предоставленный библиотекой. Например, если я позвоню вашему DataFrame df:
from lightfm.data import Dataset
data = Dataset()
data.fit(df.users_id.unique(), df.item_id.unique())
interactions_matrix, weights_matrix = data.build_interactions([tuple(i) for i in df.drop(['timestamp', 'title'], axis = 1).values])
Метод fit используется для сопоставления ваших users_id и items_id с внутренним идентификатором, а метод build_interactions создает две разреженные матрицы: одну двоичную, содержащую только взаимодействия между пользователями и элементами, а другую - с весами (то есть рейтингами). принимает в качестве параметра итерируемое значение (user_id, item_id) или (user_id, item_id, weight).
Затем вы можете использовать эти две матрицы, созданные с помощью build_interactions, чтобы соответствовать вашей модели в LightFM.
from lightfm import LightFM
model = LightFM(loss='warp')
model.fit(interactions_matrix, sample_weight = weights_matrix)
Дополнительную информацию вы можете найти в документации LightFM , например, в разделе о Наборы данных здания или Быстрый старт .