【问题标题】:Train/Test Matrix Book Crossing Recommender System训练/测试矩阵图书交叉推荐系统
【发布时间】:2018-04-15 19:59:58
【问题描述】:

我想为book crossing 数据集构建训练数据矩阵和测试数据矩阵。但是作为 ISBN 代码的 Book Id 可能包含字符。所以,我不能应用这个代码(来自tutorial):

#Create two user-item matrices, one for training and another for testing
train_data_matrix = np.zeros((n_users, n_items))
for line in train_data.itertuples():
    train_data_matrix[line[1]-1, line[2]-1] = line[3]  
    print (line)

test_data_matrix = np.zeros((n_users, n_items))
for line in test_data.itertuples():
    test_data_matrix[line[1]-1, line[2]-1] = line[3]

line[2]-1 将导致类型错误:-: 'str' 和 'int' 的操作数类型不受支持。我需要找到另一种方法来构建训练测试矩阵。还有其他构建训练/测试矩阵的方法吗?

迭代 train_data 时的打印行示例:

熊猫(索引=874192, user_id=20859, ISBN='3442248876X', rating=0, title='Die Krieger der Drachenlanze 06. Die Ritter des Schwerts.', Location='tübingen,baden-württemberg, Germany', Age=0.0)

注意:我考虑过创建一个名为 book_id 的新列,该列映射到图书 ISBN,但只包含整数,这样代码才能正常工作,但我不知道该怎么做。

【问题讨论】:

    标签: python matrix recommendation-engine train-test-split


    【解决方案1】:

    您应该对 ISBN 列进行编码,因为它包含一个字符串,例如使用这个 sn-p

    isbn_list = list(df.ISBN.unique())
    df['ISBN'] = df.ISBN.astype('category', categories=isbn_list).cat.codes
    

    之后 numpy 应该可以正常工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-14
      • 2015-02-18
      • 1970-01-01
      • 2011-03-06
      • 1970-01-01
      • 2011-07-27
      • 2020-08-25
      • 2017-03-16
      相关资源
      最近更新 更多