Создание механизма рекомендаций с использованием неявной модели факторизации Spotlight - PullRequest
0 голосов
/ 12 апреля 2019

Я строю модель неявной обратной связи, используя Spotlight ImplicitFactorizationModel.Фрейм данных имеет 4 столбца: «user_ids», «timestamps», «item_ids», «Ratings».

Я получаю сообщение об ошибке «user_ids» отсутствует.

Импорт

import pandas as pd    
import numpy as np
from spotlight.cross_validation import random_train_test_split
from spotlight.evaluation import mrr_score
from spotlight.factorization.implicit import ImplicitFactorizationModel
from spotlight.datasets import _transport
from spotlight.interactions import Interactions

Файл данных

https://takeafile.com/?f=pevufofixe

Код

deskdrop_df = pd.read_csv('./DeskDrop.csv')
deskdrop_df.head(3)
deskdrop_df.info()

Вывод:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 69868 entries, 0 to 69867
Data columns (total 4 columns):
user_ids      69868 non-null int64
timestamps    69868 non-null int64
item_ids      69868 non-null int64
ratings       69868 non-null float64
dtypes: float64(1), int64(3)
memory usage: 2.1 MB

Изменить данныетип

deskdrop_df['ratings'] = deskdrop_df['ratings'].astype('float32')

int_df = {'item_ids':deskdrop_df['item_ids'],
            'user_ids':deskdrop_df['user_ids'],
            'ratings':deskdrop_df['ratings'],
            'timestamps':deskdrop_df['timestamps']} 

train, test = random_train_test_split(Interactions(**int_df),test_percentage=0.1)
print("train ",type(train))
print("test ",type(test))

model = ImplicitFactorizationModel(loss='bpr',
                                   n_iter=10,
                                   batch_size=1024,
                                   learning_rate=1e-2,
                                   l2=1e-6)

model.fit(np.array(train))

mrr = mrr_score(model, test)
mrr

ошибка

69868
train  <class 'spotlight.interactions.Interactions'>
test  <class 'spotlight.interactions.Interactions'>
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-27-292b7a32b71e> in <module>
     12                                    l2=1e-6)
     13 
---> 14 model.fit(np.array(train))
     15 
     16 mrr = mrr_score(model, test)

~/anaconda3/envs/spotlight/lib/python3.6/site-packages/spotlight/factorization/implicit.py in fit(self, interactions, verbose)
    200         """
    201 
--> 202         user_ids = interactions.user_ids.astype(np.int64)
    203         item_ids = interactions.item_ids.astype(np.int64)
    204 

AttributeError: 'numpy.ndarray' object has no attribute 'user_ids'
...