代码之家  ›  专栏  ›  技术社区  ›  SarahData

列车/测试矩阵交叉推荐系统

  •  1
  • SarahData  · 技术社区  · 7 年前

    我想构建列车数据矩阵和测试数据矩阵 book crossing 数据集。但是作为ISBN代码的图书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]
    

    迭代train_数据时的打印线示例:

    熊猫(索引=874192,用户id=20859,ISBN='3442248876X',评级=0, title='Die Krieger der Drachenlanze 06。Die Ritter des Schwerts.”, 位置('tbingen,baden-wrttemberg,germany',年龄=0.0)

    注意:我考虑过创建一个名为book_id的新列,该列映射到book ISBN,但只包含整数,这样代码就可以工作了,但我不知道怎么做。

    1 回复  |  直到 7 年前
        1
  •  2
  •   J-H    7 年前

    您应该使用此代码段对ISBN列进行编码,因为它包含字符串

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

    之后,numpy应该可以正常工作