kaggle实战初体验记录Facebook location

赛题

 数据集

我们将他的数据集读入之后可以发现他的time这一列中都是六位数的数字而并非是我们常见的年月日或是时分秒的表达方式,这里给出的time数据其实是一种时间戳。

时间戳转换

​
time = pd.to_datetime(facebook_data["time"], unit="s")
time = pd.DatetimeIndex(time)
facebook_data["day"] = time.day
facebook_data["hour"] = time.hour
facebook_data["weekday"] = time.weekday

​

数据处理

首先自然是观察数据集中数据的存储形式,再通过matplotlib或是seaborn进行分析,尽可能去除异常值,选择合适的数据范围。

缩小数据范围

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

​

本次赛题中在数据处理的环节我尝试了代码段中使用的范围和1.5~3.0的范围,两种不同的处理方式产生的差异是极其显著的,首先是数据处理速度,两种方法的运行速度是可以被明显感受到的不同,使用范围更大的数据运行时间几乎达到了范围更小的数据的一倍之多。与此同时,对于最终的预测结果也产生了非常大的影响。使用代码段中的数据范围进行预测最终得到了大约百分之三十六的准确率,而使用了更多的数据进行训练的模型最终却只得到了百分之二十八左右的准确率的成绩。

算法

算法选择较为通用的KNN算法,KNN算法有着高精度和噪声,异常值不敏感的特性,比较适合新手入门时接触,但是与此同时他的时间和空间复杂度都比较高,一般来说他肯定不会是最优的算法,还有很大的优化空间。

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)
transfer = StandardScaler()
# 3.2 调用fit_transform
x_train = transfer.fit_transform(x_train)
x_test = transfer.fit_transform(x_test)

estimator = KNeighborsClassifier()
param_grid = {"n_neighbors": [1, 3, 5, 7, 9]}#K值
estimator = GridSearchCV(estimator, param_grid = param_grid, cv=5)

estimator.fit(x_train, y_train)
score = estimator.score(x_test, y_test)

这里是直接使用了sklearn中的KNN方法。

输出结果

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值