python lightfm ValueError: Матрица пользовательских функций определяет больше функций, чем есть предполагаемые вложения функций - PullRequest
0 голосов
/ 29 апреля 2018

Я пытаюсь использовать lightfm v. 1.14 для создания гибридной системы рекомендаций.

Я смог поместить все свои данные в разреженную матрицу с помощью следующего кода:

db = DBConnector().getDBConnector()
data = pd.read_sql('call get_UserItemRating();', con=db)

rows = data.loc[data['userID'].idxmax()]['userID'] + 1
cols = data.loc[data['itemID'].idxmax()]['itemID'] + 1
mat = sp.lil_matrix((rows, cols), dtype=np.int32)
for index, row in data.iterrows():
    if row['rating'] >= 4:
        mat[row['userID'], row['itemID']] = row['rating']

train = mat.tocoo()

data = pd.read_sql('SELECT * FROM wine_grapes;', con=db)
db.close()
rows = data.loc[data['fk_Wine'].idxmax()]['fk_Wine'] + 1
cols = data.loc[data['fk_Grapes'].idxmax()]['fk_Grapes'] + 1
mat = sp.lil_matrix((rows, cols), dtype=np.int32)
for index, row in data.iterrows():
    mat[row['fk_Wine'],row['fk_Grapes']] = 1

item_features = mat.tocoo()

model = LightFM(loss='warp')
model.fit(train,
          item_features=item_features,
          epochs=20)

Пока это выглядело хорошо, и только с "поездом" я смог получить рекомендации. Но когда я добавляю item_features, я получаю следующую ошибку:

Traceback (most recent call last):
  File "/Users/dlimacher/PycharmProjects/deepWine/wineRecommender/WineRecommendation_lightfm.py", line 76, in <module>
    sample_recommendation(model, train, [1, 2, 3])
  File "/Users/dlimacher/PycharmProjects/deepWine/wineRecommender/WineRecommendation_lightfm.py", line 62, in sample_recommendation
    scores = model.predict(user_id, np.arange(n_items))
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/lightfm/lightfm.py", line 713, in predict
    item_features)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/lightfm/lightfm.py", line 315, in _construct_feature_matrices
    item_features.shape[1]
ValueError: The user feature matrix specifies more features than there are estimated feature embeddings: 613 vs 1002.

Прежде всего, мне кажется, что сообщение об ошибке неверно, потому что речь идет о item_features, а не user_features.

Но что более важно, я не могу найти свою ошибку. Кто-нибудь может мне помочь с этим?

...