Найти тему
Властелин машин

Создание таблицы рейтингов из сырых данных

Зачастую в реальных условиях приходится конструировать таблицы оценок, выставляемых пользователями за товары, из первичных данных следующего вида (идентификаторы пользователей - uid??, идентификаторы товаров pid??):

uidX1 pidX1 оценкаX1

uidX2 pidX2 оценкаX2

uidX3 pidX3 оценкаX3

Чтобы получить необходимую для бизнес-модели таблицу рейтингов, где по строкам расположены пользователи, а по столбцам оценки соответствующих продуктов можно воспользоваться функционалом библиотек NumPy и SciPy следующим образом. Загрузить данные, используя функцию NumPy load_text, а затем столбцы из индексов (первые два) и значений (третий) подать на вход функции csc_matrix из модуля scipy.sparse, которая в сжатом виде хранит разреженную матрицу с заданными ненулевыми элементами в определенных позициях.

data = np.loadtxt(r'имя_файла')

ij = data[:, :2].astype(int)

values = data[:, 2]

rates = sparse.csc_matrix((values, ij.T)).astype(float)

Для преобразования матрицы в полную форму можно воспользоваться методом toarray:

rates = rates.toarray()