ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2022-01-27 12:58:00  阅读:207  来源: 互联网

标签:04 签到 --- train place estimator test data id


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

一、代码截图和运行截图

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

二、全部代码

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有