data = pd.read_csv("./data/FBlocation/train.csv")print(data.head())print(data.shape)
结果:
row_id x y accuracy time place_id
000.79419.0809544707028523065625115.95674.7968131865551757726713228.30787.0407743226481137537235337.36652.5165657045876567393236444.09611.1307314721307440663949(29118021,6)
处理数据
# 1、缩小数据,查询数据,为了减少计算时间
data = data.query("x > 1.0 & x < 1.25 & y > 2.5 & y < 2.75")# 2、处理时间的数据
time_value = pd.to_datetime(data['time'], unit='s')#把time转为时间类型将时间精确到秒
time_value = pd.DatetimeIndex(time_value)#设置为时间索引
data.insert(data.shape[1],'day', time_value.day)#data.shape[1]是代表插入到最后的意思
data.insert(data.shape[1],'hour', time_value.hour)
data.insert(data.shape[1],'weekday', time_value.weekday)
data = data.drop(['time'], axis=1)# 把时间戳特征删除# 3、把签到数量少于n个目标位置删除
place_count = data.groupby('place_id').count()#只选择去的人大于3的数据,认为1,2,3的是噪音,这个地方去的人很少,不用推荐给其他人
tf = place_count[place_count.row_id >3].reset_index()#reset_index()重新排索引# 根据设定的地点目标值,对原本的样本进行过滤
data = data[data['place_id'].isin(tf.place_id)]# 4、取出数据当中的特征值和目标值
y = data['place_id']# 删除目标值,保留特征值,
x = data.drop(['place_id'], axis=1)# 删除无用的特征值
x = x.drop(['row_id'], axis=1)