2

현재 LightFM이라는 Python 라이브러리를 사용하고 있습니다. 하지만 fit() 메서드에 상호 작용을 전달하는 데 문제가 있습니다.LightFM으로 스파 스 매트릭스 만들기 및 예측 인쇄

파이썬 버전 3 라이브러리 : 상호 작용 (형상 np.float32 coo_matrix [n_users, N_ITEMS]) - 매트릭스 : i는 다음과 같은 유형의 희소 행렬을해야 http://lyst.github.io/lightfm/docs/lightfm.html

문서 상태

하지만 그것은 항상 같은 권장 작동 할 수없는 것 ...

업데이트 : 그것에게 top_items 변수를 실행하는 경우에는 매트를 따라하지 말 ter 사용자가 반복하고 다른 항목 (쇠고기 또는 샐러드)을 반복하지 않으므로 내가 잘못한 것처럼 보입니다. 그것은 출력 : [ '케이크' '치즈'] 매번

다음

내 코드입니다 :

import numpy as np 
from lightfm.datasets import fetch_movielens 
from lightfm import LightFM 
from scipy.sparse import coo_matrix 
import scipy.sparse as sparse 
import scipy 

// Users, items 
data = [ 
    [1, 0], 
    [2, 1], 
    [3, 2], 
    [4, 3] 
] 

items = np.array(["Cake", "Cheese", "Beef", "Salad"]) 

data = coo_matrix(data) 

#create model 
model = LightFM(loss='warp') 
#train model 
model.fit(data, epochs=30, num_threads=2) 

// Print training data 
print(data) 

def sample_recommendation(model, data, user_ids): 

    #number of users and movies in training data 
    n_users, n_items = data.shape 

    #generate recommendations for each user we input 
    for user_id in user_ids: 

     #movies our model predicts they will like 
     scores = model.predict(user_id, np.arange(n_items)) 

     #rank them in order of most liked to least 
     top_items = items[np.argsort(-scores)] 

     print(top_items) 

sample_recommendation(model, data, [1,2]) 
아마
+0

'할 수 없다 '는 금지 된 문구입니다! 무엇이 잘못되었는지 말해야합니다. 오류, 잘못된 결과 등. 문제가 발생한 부분에 대해 구체적으로 설명하십시오. – hpaulj

+0

안녕하세요 @ hpaulj 나는 내 대답을 업데이트하고 내가 잘못 생각하는 것에 대답했습니다. 고마워요 :) – aat2703

답변

1
data = coo_matrix(data) 

당신이 원하는 것이 아니다; data의 정확한 복제본입니다. 특히 드문 드문.

data은 무엇을 나타냅니다?

나는 data으로 표시된 좌표에서 대부분 0과 1이있는 행렬을 원한다고 추측 할 것입니다.

In [20]: data = [ 
    ...:  [1, 0], 
    ...:  [2, 1], 
    ...:  [3, 2], 
    ...:  [4, 3] 
    ...: ] 

은 아마 당신이 원하지 않는 것을 :

In [21]: ds = sparse.coo_matrix(data) 
In [22]: ds.A 
Out[22]: 
array([[1, 0], 
     [2, 1], 
     [3, 2], 
     [4, 3]]) 

다시 시도 :

학습 기능에가는 것을 더 일반적이다
In [23]: data=np.array(data) 
In [24]: ds=sparse.coo_matrix((np.ones(4,int),(data[:,0],data[:,1]))) 
In [25]: ds 
Out[25]: 
<5x4 sparse matrix of type '<class 'numpy.int32'>' 
    with 4 stored elements in COOrdinate format> 
In [26]: ds.A 
Out[26]: 
array([[0, 0, 0, 0], 
     [1, 0, 0, 0], 
     [0, 1, 0, 0], 
     [0, 0, 1, 0], 
     [0, 0, 0, 1]]) 

.

+0

그게 정확히 내가 필요했던거야! 실제 매트릭스를 만들기 위해 데이터 사이에 드문 드문 한 데이터가 누락되었습니다! 고맙습니다! – aat2703