Train/Test矩阵图书穿越推荐系统
Train/Test Matrix Book Crossing Recommender System
我想为book crossing dataset. But the Book Ids which are ISBN code may contain characters. So, I cannot apply this code (from a 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/test 矩阵的方法吗?
遍历 train_data 时的打印行示例:
Pandas(Index=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 但仅包含整数以便代码有效,但我不知道该怎么做。
您应该对 ISBN 列进行编码,因为它包含一个字符串,例如使用此代码段
isbn_list = list(df.ISBN.unique())
df['ISBN'] = df.ISBN.astype('category', categories=isbn_list).cat.codes
之后 numpy 应该可以正常工作
我想为book crossing dataset. But the Book Ids which are ISBN code may contain characters. So, I cannot apply this code (from a 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/test 矩阵的方法吗?
遍历 train_data 时的打印行示例:
Pandas(Index=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 但仅包含整数以便代码有效,但我不知道该怎么做。
您应该对 ISBN 列进行编码,因为它包含一个字符串,例如使用此代码段
isbn_list = list(df.ISBN.unique())
df['ISBN'] = df.ISBN.astype('category', categories=isbn_list).cat.codes
之后 numpy 应该可以正常工作