原数据集的数据格式:
每行为:(test_User, test_Item) negativeItem1 negativeItem2 negativeItem3 …… negativeItem99
即每一行对应一个user 与100个item,其中1个item为整理,其余99个为负例。
将要处理成的目标数据的数据格式为:
每一行对应一个User与一个Item,用“,”隔开,写入一个新的文件。
【解决方案】
ef load_test_user_item_file(filename): user_item_file = open('test_user_item_file.test','w',encoding='UTF-8') with open(filename, "r") as f: line = f.readline() while line != None and line != "": arr = line.split(" ") # 针对 Musical_Instruments 数据集 arr[0] = arr[0].lstrip("(") arr[0] = arr[0].rstrip(")") user = arr[0].split(",")[0] item = arr[0].split(",")[1] user_item_file.write( user + ',' + item + ' ') for x in arr[1:]: if x == arr[99]: user_item_file.write(user + ',' + x ) else: user_item_file.write(user + ',' + x + ' ') line = f.readline() return user_item_file
结果为: