编程语言
首页 > 编程语言> > K近邻算法04---案例:预测Facebook签到位置

K近邻算法04---案例:预测Facebook签到位置

作者:互联网

: 这部分看博客注释与运行截图就差不多能理解啦,把代码复制到自己的编译器中分别运行,认真体会每一步。

一、代码截图和运行截图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、全部代码

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

# 读取数据
data = pd.read_csv('./data/FBlocation/train.csv')

# 1.获取数据  read_csv

# 2.数据基本处理  数据集划分,把时间戳提出成明显的时间特征(周几,几号,几点), 剔除签到人数少的place_id

# 3.特征工程 标准化

# 4.机器学习
# 4.1 创建模型
# 4.2 训练模型

# 5.模型评估  分类 准确率


# 2.数据基本处理
# 取一小部分数据演示
data = data.query('x>2 & x<2.5 & y>2 & y<2.5')
data.head()


# 把时间戳提出成为明显的时间特征(周几,几号,几点)特征提取 用户地址--》经纬度
time = pd.to_datetime(data['time'], unit='s')
time = pd.DatetimeIndex(time)
time


data['weekday'] = time.weekday
data['day'] = time.day
data['hour'] = time.hour
data.head()


# 最终目的:剔除签到人数少的place_id
# 第一步:统计place_id出现的次数 并且切出['row_id']这一列
temp = data.groupby('place_id')['row_id'].count()
# 第二步:找出temp>3的次数的index
res = temp[temp>3].index    #temp的index就是place_id账号
res


# 第三步:找 data数据中 “place_id” 这一列中与  res  匹配的数据。   从而得出place_id大于3的数据
data[data['place_id'].isin(res)]



# 数据集划分
x = data[['x','y','accuracy','weekday','day','hour']]
y = data['place_id']
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)

# 3.特征工程 标准化
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)


# 4.机器学习
# 4.1 创建模型
estimator = KNeighborsClassifier(algorithm='kd_tree')
    # 构建字典参数
param_dict = {'n_neighbors':[1,3,5]}
    # 初始化GSCV估计器
estimator_gscv = GridSearchCV(estimator, param_dict, cv = 3)

# 4.2训练模型
estimator_gscv.fit(x_train, y_train)


# 5.模型评估
estimator_gscv.score(x_test, y_test)


# 获取最优模型
estimator_gscv.best_estimator_



# 获取最优超参数
estimator_gscv.best_params_

标签:04,签到,---,train,place,estimator,test,data,id
来源: https://blog.csdn.net/alovelypeach/article/details/122715793