K-近邻算法之案例2:预测facebook签到位置
2023-09-11 14:15:15 时间
K-近邻算法之案例2:预测facebook签到位置
1 数据集介绍 【https://www.kaggle.com 天池,人工智能比赛网址】
数据介绍:将根据用户的位置,准确性和时间戳预测用户正在查看的业务。
train.csv,test.csv
row_id:登记事件的ID
xy:坐标
准确性:定位准确性
时间:时间戳
place_id:业务的ID,这是您预测的目标
2 步骤分析
-
对于数据做一些基本处理(这里所做的一些处理不一定达到很好的效果,我们只是简单尝试,有些特征我们可以根据一些特征选择的方式去做处理)
-
1 缩小数据集范围 DataFrame.query()
-
2 选取有用的时间特征
-
3 将签到位置少于n个用户的删除
-
-
分割数据集
-
标准化处理
-
k-近邻预测
3 代码过程
- 1.获取数据集
import pandas as pd
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
# 1、获取数据集
facebook = pd.read_csv("./data/FBlocation/train.csv")
- 2.基本数据处理
# 2.基本数据处理
# 2.1 缩小数据范围
facebook_data = facebook.query("x>2.0 & x<2.5 & y>2.0 & y<2.5")
# 2.2 选择时间特征
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
# 2.3 去掉签到较少的地方
place_count = facebook_data.groupby("place_id").count()
place_count = place_count[place_count["row_id"]>3]
facebook_data = facebook_data[facebook_data["place_id"].isin(place_count.index)]
# 2.4 确定特征值和目标值
x = facebook_data[["x", "y", "accuracy", "day", "hour", "weekday"]]
y = facebook_data["place_id"]
# 2.5 分割数据集
x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=22)
- 特征工程--特征预处理(标准化)
# 3.特征工程--特征预处理(标准化)
# 3.1 实例化一个转换器
transfer = StandardScaler()
# 3.2 调用fit_transform
x_train = transfer.fit_transform(x_train)
x_test = transfer.fit_transform(x_test)
- 机器学习--knn+cv
# 4.机器学习--knn+cv
# 4.1 实例化一个估计器
estimator = KNeighborsClassifier()
# 4.2 调用gridsearchCV
param_grid = {"n_neighbors": [1, 3, 5, 7, 9]}
estimator = GridSearchCV(estimator, param_grid=param_grid, cv=5)
# 4.3 模型训练
estimator.fit(x_train, y_train)
- 模型评估
# 5.模型评估
# 5.1 基本评估方式
score = estimator.score(x_test, y_test)
print("最后预测的准确率为:\n", score)
y_predict = estimator.predict(x_test)
print("最后的预测值为:\n", y_predict)
print("预测值和真实值的对比情况:\n", y_predict == y_test)
# 5.2 使用交叉验证后的评估方式
print("在交叉验证中验证的最好结果:\n", estimator.best_score_)
print("最好的参数模型:\n", estimator.best_estimator_)
print("每次交叉验证后的验证集准确率结果和训练集准确率结果:\n",estimator.cv_results_)
运行结果:
相关文章
- 世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?
- 数据分析实际案例之:pandas在餐厅评分数据中的使用
- 地球引擎保姆级教程——美国农田植被分类案例分析
- Google Earth Engine(GEE)—— VCT 算法案例
- 决策树算法案例:泰坦尼克号乘客生存预测
- K-近邻算法之案例:鸢尾花种类预测--数据集介绍
- 【MATLAB教程案例75~79总结】MATLAB网络类算法仿真经验和技巧总结
- 【MATLAB教程案例78】基于GA优化的WSN最大覆盖率matlab仿真——扩展到任意一种优化算法解决WSN覆盖率问题
- 【MATLAB教程案例76】基于dijkstra算法的WSN最短路由matlab仿真
- 【MATLAB教程案例43~50总结】MATLAB三维重建类算法仿真经验和技巧总结
- 【MATLAB教程案例16】基于GWO灰狼优化算法的函数极值计算matlab仿真及其他应用
- 【FPGA教程案例87】加解密1——基于FPGA的AES加解密算法verilog实现
- 【FPGA教程案例54】深度学习案例1——基于FPGA的CNN卷积神经网络之理论分析和FPGA模块划分
- 【FPGA教程案例15】基于vivado核的Cordic算法设计与实现
- 美团面试——算法岗(4个面试案例)
- 关闭二维码案例
- 大数据与机器学习:实践方法与行业案例.1.1 数据的基本形态
- 《深度学习导论及案例分析》一3.2受限玻耳兹曼机的学习算法
- 正则表达式 【一篇就够】【函数封装案例直接拿来用】
- 《不只是美:信息图表设计原理与经典案例》—— 第2章 形式与功能:可视是一种技术
- Zookeeper超级用户使用案例:How to remove ACL protected ZK Node
- No.045<软考>《(高项)备考大全》【专项1】《案例分析 - 简介、方法、技巧、理论》
- 《Mahout算法解析与案例实战》一一2.1 Mahout安装前的准备
- 《Mahout算法解析与案例实战》一一
- C++案例——协助破案