培训/测试矩阵书交叉推荐系统

时间:2017-11-03 06:35:02

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

我想为book crossing数据集构建训练数据矩阵和测试数据矩阵。但是作为ISBN代码的Book Ids可能包含字符。所以,我无法应用此代码(来自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上迭代时打印行的示例:

  

Pandas(Index = 874192,user_id = 20859,ISBN ='3442248876X',rating = 0,   title ='Die Krieger der Drachenlanze 06. Die Ritter des Schwerts。',   位置='tübingen,baden-württemberg,德国',年龄= 0.0)

注意:我考虑创建一个名为book_id的新列,该列映射到书籍ISBN,但只包含整数,以便代码可以工作,但我不知道如何操作。

1 个答案:

答案 0 :(得分:2)

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

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

之后numpy应该没有问题