推荐系统的数据处理:(gowalla数据集)
原数据大约3万用户,4万交互物品
更改为大约取前2000用户,取前1万交互物品
主要目的是在练习算法时可以加快速度,到最后测试时在用大的数据集跑
原自带的数据集较大,在进行算法练习时,跑模型时间较长,为了平时研究节约时间,将其改小一点
进入正题:
先导入我们的数据集:(这里以训练集为例)
import numpy as np
import pandas as pd
import random
train_file = './train.txt' #导入我们要处理的数据的路径
data=pd.read_csv(train_file,sep="/n",header=None) #对于数据进行可视化
可见原数据被分为仅有一列,接下来我们进行分列处理
df = data[0].str.split(' ',expand=True) #以空格为间隔符,分为多列,进行维度扩张
经过操作后1列变为了812列 ,接下来选择前2000行
user = df[:2000]
user
接下来就是删除大于某值的物品(这里选8000)
user.fillna(100000, inplace=True) #先将空类型值填充
user_list = [list() for u in range(len(user))] #先创建列表用于存储每个用户对应的物品
len(user_list)
将大于8000的物品进行删除
for idx,row in user.iterrows():
for i in range(0,user.shape[1]):
#print(idx,row[i])
if int(row[i])<8000:
user_list[idx].append(row[i])
user_list
读取我们删除后的数据
data_change=df=pd.DataFrame(user_list) #用pandas读取列表
data_change
data_change.to_csv('test1.txt', sep='\t',index=False, header=None) #导出为txt
导出的数据空格较大不太美观,用文本中的替换处理一下
同理对于test.txt进行相同处理
本文为简单的TXT数据处理,设计的都是基础知识,本人也在不断学习中,有更好的可以一起学习,特此记录自己的学习过程
注:因为是TXT文档,其实对原txt也可以进行直接删除处理,也是有效的方法,但是,还是应该懂得如何用代码进行操作处理,毕竟处理特别大的数据,还是比手动快点