Python 3.x Lightfm用户功能中的功能数量不正确
我正在构建推荐系统-Lightfm中的混合。 我的数据有39326个独特的用户和2569个独特的游戏标题(项目)。 我的列车互动sparce矩阵具有以下形状: 我的测试交互稀疏矩阵具有以下形状: I列车型号:型号1=LightFM(学习率=0.01,损耗='warp') 模型1.拟合(训练交互,Python 3.x Lightfm用户功能中的功能数量不正确,python-3.x,recommender-systems,lightfm,Python 3.x,Recommender Systems,Lightfm,我正在构建推荐系统-Lightfm中的混合。 我的数据有39326个独特的用户和2569个独特的游戏标题(项目)。 我的列车互动sparce矩阵具有以下形状: 我的测试交互稀疏矩阵具有以下形状: I列车型号:型号1=LightFM(学习率=0.01,损耗='warp') 模型1.拟合(训练交互, 时代=20) 这将创建对象: 但当我试图通过以下方式检查准确性时: 列车精度=列车k处的精度(模型1,列车相互作用,k=10)。平均值() 试验精度=试验k时的精度(模型1,试验相互作用,k=10)。平
时代=20) 这将创建对象: 但当我试图通过以下方式检查准确性时: 列车精度=列车k处的精度(模型1,列车相互作用,k=10)。平均值() 试验精度=试验k时的精度(模型1,试验相互作用,k=10)。平均值() 我收到错误消息:用户功能中的功能数量不正确
为什么?很明显,这些形状是兼容的?我遗漏了什么?您的测试稀疏矩阵的维数为39323x2569,而您的列车稀疏矩阵的维数为39326x2569。测试集中缺少3个用户 我建议您使用lightfm内置的列车/测试拆分功能以避免错误: 如果要以自己的方式拆分数据,还可以将用户id和项目id转换为从0开始的连续整数。然后用这个:
from lightfm.data import Dataset
# Create your train and test set in the format [[user_id1, item_id1, score1], ..., [user_idn, item_idn, scoren]]
# Your score can be just 1 for an implicit interaction
# user_id and item_id are integers
data = Dataset()
data.fit(unique_user_ids, # list from 0 to n_users
unique_item_ids # list from 0 to n_items
)
train, weights_matrix = data.build_interactions([tuple(i) for i in train])
test, weights_matrix = data.build_interactions([tuple(i) for i in test])
非常感谢你!我必须使用我自己的选择,以确保每个用户和每个项目都在列车测试。因此,现在的形状是兼容的,如果我不使用任何用户/项目fetaures,它可以工作,但当我这样做时,我仍然会得到错误。我添加了8个附加功能,因此我的形状是:交互:39326x2569,用户功能形状:39326行×2577(2577=2569+8),项目功能:2569行×39334列(39334=39326+8)。它训练得很好,但在尝试评估它时,我仍然收到形状错误消息。特征应该是什么形状?