我想为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,但只包含整数,以便代码可以工作,但我不知道如何操作。
答案 0 :(得分:2)
您应该对ISBN列进行编码,因为它包含一个字符串,例如,使用此代码段
isbn_list = list(df.ISBN.unique())
df['ISBN'] = df.ISBN.astype('category', categories=isbn_list).cat.codes
之后numpy应该没有问题