Как я могу генерировать пользователей по рекомендации пользователей через пакет Python LightFM? - PullRequest
0 голосов
/ 17 февраля 2019

Я создаю набор данных по следующим кодам:

from lightfm.data import Dataset
from lightfm import LightFM

dataset = Dataset()


dataset.fit((row['id'] for row in user_queryset.values()),
            (row['id'] for row in item_queryset.values()))


num_users, num_items = dataset.interactions_shape()


(interactions_sparse_matrix, weights) = dataset.build_interactions(
        (
            (
                row['user_id']
                ,row['item_id']
                ,row['weight']
            )
        )
        for row in queryset.values()
    )

dataset.fit_partial(
    items=(x['item_id'] for x in items_list),
    item_features=(x['feature_id'] for x in item_features_list)
    )
dataset.fit_partial(
    users=(x['user_id'] for x in users_list),
    user_features=(x['feature_id'] for x in user_features_list)
    )
item_features = dataset.build_item_features(
    ((x['item_id'], [x['property_id']])
    for x in item_features_list))
user_features = dataset.build_user_features(
    ((x['user_id'], [x['property_id']])
    for x in user_features_list))

и генерирую модель поезда по:

model = LightFM(loss='bpr')
model.fit(
        interactions_sparse_matrix
        ,item_features=item_features
        ,user_features=user_features
        )

Затем я использую cosine_similarity метод sklearnчтобы получить сходство:

from scipy import sparse
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np

users_sparse_matrix = sparse.csr_matrix(users_embed)
similarities = cosine_similarity(users_sparse)

Но при печати similarities.shape возвращается:

(14, 14)

Хотя у меня 5 пользователей, и я думаю, что должно быть (5,5), янеправильно?что-то вроде этой матрицы:

1    0.2   0.8    0.4    0.6
0.2   1    ...    ...    ...
0.8  ...    1     ...    ...
0.4  ...   ...     1     ...
0.6  ...   ...    ...     1

Как я могу заставить пользователей и их оценки рекомендовать пользователю?спасибо

Моя версия LightFM: 1.15

И я использую Python 3.6

1 Ответ

0 голосов
/ 18 февраля 2019

Проблема не в вашем коде.Существует недоразумение с концепцией user_embedding.Матрица user_embedding - это матрица с количеством пользовательских функций в виде строки и количеством компонентов в виде столбца.если у вас есть эта матрица, для получения сходства между каждым пользователем с косинусным сходством необходимо умножить матрицу user_feature на user_embedding и, наконец, вычислить косинусное сходство точечного произведения матрицы user_feature с матрицей user_embedding.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...