目录

一、读取数据

二、 数据处理

1、缩小数据范围

2、得到正常时分秒

2-1、时间戳化时分秒

2-2、得到时间列表

2-3、添加时间信息到数据data中

3、得到数据集

3-1、获取各地点签到次数

3-2、过滤签到次数过少的地点

3-3、筛选特征值和目标值

3-4、数据集划分

4、特征工程(标准化)

5、KNN算法预估器训练

6、模型评估

总代码


特征值:坐标、准确度、hour、day、weekday

目标值:地址id

一、读取数据

文件下载地址1(推荐): train.rar(train.csv,facebook签到信息)-机器学习文档类资源-CSDN下载

文件下载地址2(不推荐):

https://pan.baidu.com/s/17DeVm48VRG0tlEzQM0KfSA 
提取码:gx4a

# 1、读取数据
data = pd.read_csv('train.csv')

二、 数据处理

可以看出,上面的数据量非常大。

1、缩小数据范围

# 2-1、缩小数据范围
data = data.query('x>2.0 & x<2.5 & y>1.0 & y<1.5')

2、得到正常时分秒

可以看到时间戳是这种,需要转换成时分秒。

2-1、时间戳化时分秒

# 2-2、转换时间戳为时分秒
time_value = pd.to_datetime(data['time'], unit='s')

2-2、得到时间列表

# 获取时间列表
time_list = pd.DatetimeIndex(time_value)

2-3、添加时间信息到数据data中

# 添加时间信息到数据data中
data['hour'] = time_list.hour
data['day'] = time_list.day
data['weekday'] = time_list.weekday

3、得到数据集

3-1、获取各地点签到次数

# 3、过滤签到次数过少的地点
place_count = data.groupby('place_id').count()['row_id']

3-2、过滤签到次数过少的地点

# 3-2、过滤签到次数过少的地点
place_count = place_count[place_count>3]

可以看出,现在的签到次数都是在3次以上了,3次及以下的已经被过滤掉了。

 获得签到次数过少地点的索引

index = data['place_id'].isin(place_count.index)

过滤:

data = data[index]

3-3、筛选特征值和目标值

选取特征值和目标值

train = data[['x', 'y', 'accuracy', 'hour', 'day', 'weekday']]  #特征值
target = data['place_id']                                       #目标值

3-4、数据集划分

# 3-4、数据集划分
train_data, test_data, train_target, test_target = train_test_split(train, target)

4、特征工程(标准化)

# 4、特征工程(标准化)
transfer = StandardScaler()
train_data = transfer.fit_transform(train_data)
test_data = transfer.transform(test_data)
# 注:不进行fit处理:测试集要用训练集的特征值和标准差(否则测试集就是在自己对自己进行测试,没有意义)
# 注:target是目标值,不能进行标准化(所以train_target和test_target不进行标准化)

5、KNN算法预估器训练

# 5、KNN算法预估器
# 5-1、得到预估器
estimator = KNeighborsClassifier()          #后面会有超参数搜索,这里先不用设置k值
# 5-2、超参数搜索(模型选择与调优):得到最佳k值(最佳预估器)
# 1、参数准备
param_dict = {'n_neighbors':[3,5,7,9]}
# 2、开始搜索
estimator = GridSearchCV(estimator, param_dict, cv=3)
#                       预估器       参数范围     选择次数
# 5-3、训练(用预估器对训练值进行训练)
estimator.fit(train_data, train_target)

6、模型评估

# 6、模型评估
# 6-1、得到预测结果
predict = estimator.predict(test_data)
print(predict)
# 6-2、对比预测值和测量目标值
print("直接比对预测值和测量目标值:\n", predict==test_target)
# 6-3、得到准确率(对比特征集和目标集测试值)
score = estimator.score(test_data, test_target)
print("准确率:\n", score)

总代码

# 签到地址预估
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# 1、读取数据
data = pd.read_csv('train.csv')# 2、数据处理
# 2-1、缩小数据范围
data = data.query('x>2.0 & x<2.5 & y>1.0 & y<1.5')# 2-2、转换时间戳为时分秒
time_value = pd.to_datetime(data['time'], unit='s')
# 获取时间列表
time_list = pd.DatetimeIndex(time_value)
# print(time_list)# 添加时间信息到数据data中
data['hour'] = time_list.hour
data['day'] = time_list.day
data['weekday'] = time_list.weekday# 3、过滤签到次数过少的地点
# 3-1、获取各地点签到次数
place_count = data.groupby('place_id').count()['row_id']# 3-2、过滤签到次数过少的地点
place_count = place_count[place_count>3]
# 获取签到次数过少地点的索引
index = data['place_id'].isin(place_count.index)
# 过滤
data = data[index]# 3-3、筛选特征值和目标值
train = data[['x', 'y', 'accuracy', 'hour', 'day', 'weekday']]  #特征值
target = data['place_id']                                       #目标值# 3-4、数据集划分
train_data, test_data, train_target, test_target = train_test_split(train, target)# 4、特征工程(标准化)
transfer = StandardScaler()
train_data = transfer.fit_transform(train_data)
test_data = transfer.transform(test_data)
# 注:不进行fit处理:测试集要用训练集的特征值和标准差(否则测试集就是在自己对自己进行测试,没有意义)
# 注:target是目标值,不能进行标准化(所以train_target和test_target不进行标准化)# 5、KNN算法预估器
# 5-1、得到预估器
estimator = KNeighborsClassifier()          #后面会有超参数搜索,这里先不用设置k值
# 5-2、超参数搜索(模型选择与调优):得到最佳k值(最佳预估器)
# 1、参数准备
param_dict = {'n_neighbors':[3,5,7,9]}
# 2、开始搜索
estimator = GridSearchCV(estimator, param_dict, cv=3)
#                       预估器       参数范围     选择次数
# 5-3、训练(用预估器对训练值进行训练)
estimator.fit(train_data, train_target)# 6、模型评估
# 6-1、得到预测结果
predict = estimator.predict(test_data)
print(predict)
# 6-2、对比预测值和测量目标值
print("直接比对预测值和测量目标值:\n", predict==test_target)
# 6-3、得到准确率(对比特征集和目标集测试值)
score = estimator.score(test_data, test_target)
print("准确率:\n", score)print(data)

机器学习(实战)facebook地址预测相关推荐

  1. 疯狂的机器学习实战-银行营销预测

    机器学习实战-银行营销预测 问题: 数据集: 链接:https://pan.baidu.com/s/1TUOLr8jFbT38p_iUh1iBsQ 提取码:1234 银行营销数据集 这些数据与葡萄牙银 ...

  2. 机器学习实战-泰坦尼克号生存预测案例

    泰坦尼克号生存预测案例 操作平台:Jupyter Notebook 实验数据:从官方下载的泰坦尼克号测试集与训练集 使用语言:python 实验步骤: 安装我们所需要的第三方库,本次实验需要额外下载安 ...

  3. 机器学习实战三: 预测汽车油耗效率 MPG

    预测汽车油耗效率 MPG 这次做一个简单的线性回归的实验,用来预测汽车的油耗效率 MPG,让我们通过这次实验,更加清晰的了解一下LinearRegression,如果想更加清晰的了解的话,可以看看吴恩 ...

  4. 机器学习实战---PM2.5预测

    文章目录 一. 预处理 二.模型训练 三.测试 四.模型预测 五.保存预测结果 感受 项目数据集 数据集介绍 使用丰原站的观测记录,分成 train set 跟 test set,train set ...

  5. 机器学习实战 泰坦尼克号生存预测

    数据集下载 链接:https://pan.baidu.com/s/1f6x0ZHlAdwch52rHKDYBgA 提取码:9hgz 数据集简介 PassengerId: 乘客ID Survived: ...

  6. 机器学习实战——KNN算法预测电影类型

    预测电影类型 现有爱情片和动作片(不是爱情动作片,雾)的打斗场面和接吻场面的次数统计,然后给出一个电影打斗场面和接吻场面出现的次数,预测其类型. 那么如何预测呢?当然用KNN了. KNN算法的原理就是 ...

  7. pyspark入门---机器学习实战预测婴儿出生率(二)使用ML库

    机器学习实战预测婴儿出生率 1.加载数据 2.创建转换器 3.创建预测器 4.创建管道 5.训练模型 6.使用BinaryClassificationEvaluator对模型评估 7.模型保存与调用 ...

  8. 《机器学习实战》学习笔记(八):预测数值型数据 - 回归

    欢迎关注WX公众号:[程序员管小亮] [机器学习]<机器学习实战>读书笔记及代码 总目录 https://blog.csdn.net/TeFuirnever/article/details ...

  9. 机器学习实战-微额借款用户人品预测

    团队分享网址 1.项目背景 互联网金融近年来异常火热,吸引了大量资本和人才进入. 在金融领域中,无论是投资理 财还是借贷放款,风险控制永远是最为核心和重要的问题,而存目前所有的互联网金融产品 中,微额 ...

最新文章

  1. 【CVPR2020】可微分的NAS方法汇总
  2. 流程的python-《流畅的 Python》到底好在哪?
  3. doc转docx文件会乱吗_Word文档doc与docx的区别
  4. GDCM:制作模板的测试程序
  5. Boost:序列化之text_wiarchive和和text_woarchive
  6. Nandflash 驱动深度分析(基于S3C2410)
  7. js动态改变iframe的src属性
  8. java http get_「面小易-面经12」阿里巴巴Java方向面试题汇总(含答案)
  9. 使用 bash 脚本把 GCE 的数据备份到 GCS
  10. ABP应用层——参数有效性验证
  11. 解读前端开发工程师必备技能
  12. 燃情动作——《速度与激情:特别行动》影评数据分析可视化
  13. 解构OPPO IoT:“开放生态”+“用户思维”,“智美生活”雏形已显
  14. postman小技巧-提取变量及设置变量
  15. 不越狱破解A1528 iPhone5s移动联通4G网络
  16. Panel的基本用法
  17. Element-UI Select 下拉框 根据汉字拼音过滤选择选项(使用filter-method,filterable属性)
  18. 绝对值对应c语言表达式,c语言绝对值函数?
  19. java clh_CLH锁学习
  20. python实战扫码下载_Python实例 一 12306抢票(一)扫码登陆

热门文章

  1. Android 金钱计算BigDecimal 的使用
  2. 微信小程序填坑之路(三):布局适配方案(rpx、px、vw、vh)
  3. 剑指offer-丑数
  4. MyBatis-Spring(四)--MapperFactoryBean实现增删改查
  5. centos7+ansible自动化工具使用
  6. 机器学习入门(15)— 全连接层与卷积层的区别、卷积神经网络结构、卷积运算、填充、卷积步幅、三维数据卷积、多维卷积核运算以及批处理
  7. Nginx与Lua利用fpm打成rpm包
  8. Spring.Net Aop
  9. 面向对象编程(OOP)----BLUE大师JS课堂笔记(二)
  10. CS Tip 16: 利用注释