预测facebook签到位置

学习目标:熟练掌握KNN、数据集划分、交叉验证、网格搜索这些内容。

项目描述

在这里插入图片描述
本次比赛的目的是预测一个人将要签到的地方。 为了本次比赛,Facebook创建了一个虚拟世界,其中包括10公里*10公里共100平方公里的约10万个地方。 对于给定的坐标集,您的任务将根**据用户的位置,准确性和时间戳等预测用户下一次的签到位置。**数据被制作成类似于来自移动设备的位置数据。 请注意:您只能使用提供的数据进行预测。

数据集介绍

数据集:
在这里插入图片描述

文件说明 train.csv, test.csv
  row id:签入事件的id
  x y:坐标
  accuracy: 准确度,定位精度
  time: 时间戳
  place_id: 签到的位置,这也是你需要预测的内容

官网:https://www.kaggle.com/c/facebook-v-predicting-check-ins

说明:
1、数据量过大我们只取其中的一小部分进行分析
2、使用K近邻算法
代码:

导入相关的包

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split,GridSearchCV
from sklearn.neighbors import KNeighborsClassifier

获取数据集

facebook = pd.read_csv('data/FBlocation/train.csv')
facebook.head()

数据集为:
在这里插入图片描述

数据处理

缩小数据范围

facebook_data = facebook.query("x>2.0 & x<2.5 & y>2.0 & y<2.5")

选择时间特征


time = pd.to_datetime(facebook_data['time'],unit='s')
time.head()

在这里插入图片描述

time = pd.DatetimeIndex(time) #将series转化为dataframe
facebook_data['day'] = time.day
facebook_data['hour'] = time.hour
facebook_data['weekday'] = time.weekday

去掉到达地点次数少的地方

partical_data = facebook_data.groupby('place_id').count()
tmp_data = partical_data[partical_data['row_id']>3]
facebook_data = facebook_data[facebook_data['place_id'].isin(tmp_data.index)]

确定特征值和目标值

x = facebook_data[['x','y','accuracy','day','hour','weekday']]
y = facebook_data['place_id']

分割数据集

x_train,x_test,y_train,y_test = train_test_split(x,y,random_state = 22)

特征工程

transformer = StandardScaler()
x_train = transformer.fit_transform(x_train)
x_test = transformer.transform(x_test)

机器学习

estimator = KNeighborsClassifier()
param_grid = {"n_neighbors": [1, 3, 5, 7]}
estimator = GridSearchCV(estimator, param_grid=param_grid, cv=3)
estimator.fit(x_train, y_train)

模型评估

score = estimator.score(x_test,y_test)

最后的结果准确率有36%~37%之间,还需要选择更适合的模型。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九久呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值