首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用LightFM和打印预测创建稀疏矩阵

使用LightFM和打印预测创建稀疏矩阵
EN

Stack Overflow用户
提问于 2016-10-29 20:21:04
回答 1查看 2.7K关注 0票数 5

我目前正在使用一个名为LightFM的Python库。但是,在将交互传递给fit()方法时,我遇到了一些困难。

Python版本:3库:http://lyst.github.io/lightfm/docs/lightfm.html

文档指出,我应该创建以下类型的稀疏矩阵:交互(np.float32 coo_matrix of type n_users,n_items) --矩阵

但我似乎不能让它起作用它总是推荐同样的..。

更新:在执行它时,top_items变量表示不管它迭代的是哪个用户,而不是其他任何一项(牛肉或沙拉),所以我似乎做错了什么。它每次输出:“蛋糕”“奶酪”

这是我的代码:

代码语言:javascript
复制
    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])
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-29 21:24:49

代码语言:javascript
复制
 data = coo_matrix(data)

可能不是您想要的;它是data的精确副本。不是特别稀少。

data代表什么?

我猜你真的想要一个大部分为0的矩阵,在由data表示的坐标处有1s。

代码语言:javascript
复制
In [20]: data = [
    ...:     [1, 0], 
    ...:     [2, 1], 
    ...:     [3, 2],
    ...:     [4, 3]
    ...: ]

可能不是你想要的:

代码语言:javascript
复制
In [21]: ds = sparse.coo_matrix(data)
In [22]: ds.A
Out[22]: 
array([[1, 0],
       [2, 1],
       [3, 2],
       [4, 3]])

再试:

代码语言:javascript
复制
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]])

这是更典型的学习功能。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40323321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档