摘要 

本文主要根据对Airbnb 新用户的民宿预定结果进行预测,完整的陈述了从数据探索到特征工程到构建模型的整个过程。 其中:

1. 数据探索部分主要基于pandas库,利用常见的:head(),value_counts(),describe(),isnull(),unique()等函数以及通过matplotlib作图对数据进行理解和探索;

2. 特征工程部分主要是通过从日期中提取年月日,季节,weekday,对年龄进行分段,计算相关特征之间的差值,根据用户id进行分组,从而统计一些特征变量的次数,平均值,标准差等等,以及通过one hot encoding和labels encoding对数据进行编码来提取特征;

3. 构建模型部分主要基于sklearn包,xgboost包,通过调用不同的模型进行预测,其中涉及到的模型有,逻辑回归模型Logistic Regression,树模型:DecisionTree,RandomForest,AdaBoost,Bagging,ExtraTree,GraBoost,SVM模型:SVM-rbf,SVM-poly,SVM-linear,xgboost,以及通过改变模型的参数和数据量大小,来观察NDCG的评分结果,从而了解不同模型,不同参数和不同数据量大小对预测结果的影响.

1.背景

关于此数据集,在此挑战中,您将获得一个用户列表及其人口统计信息,Web会话记录和一些摘要统计信息。 系统会要求您预测新用户的首个预订目的地所在的国家/地区。 此数据集中的所有用户均来自美国。

目的地国家有12种可能的结果:'US','FR','CA','GB','ES','IT','PT','NL','DE','AU', 'NDF'(找不到目的地)和'其他'。 请注意,“NDF”与“其他”不同,因为“其他”表示有预订,但是对于未包含在列表中的国家,而“NDF”表示没有预订。

2.数据描述及展现

总共包含6个csv文件 

1. train_users_2.csv - the training set of users (训练数据)

2. test_users.csv - the test set of users (测试数据) 
- id: user id (用户id) 
- date_account_created(帐号注册时间): 帐户创建日期
- timestamp_first_active(首次活跃时间):第一个活动的时间戳,请注意它可以早于date_account_created或date_first_booking 因为用户可以在注册前进行搜索
- date_first_booking(首次订房时间): 首次预订的日期
- gender(性别) 
- age(年龄) 
- signup_method(注册方式) 
- signup_flow(注册页面): the page a user came to signup up from (用户注册的页面)
- language(语言): 国际语言偏好
- affiliate_channel(付费市场渠道): what kind of paid marketing 
- affiliate_provider(付费市场渠道名称): where the marketing is e.g. google, craigslist, other 
- first_affiliate_tracked(注册前第一个接触的市场渠道): whats the first marketing the user interacted with before the signing up 
- signup_app(注册app) 
- first_device_type(设备类型) 
- first_browser(浏览器类型) 
- country_destination(订房国家-需要预测的量): 这是我们要预测的目标变量,即测试集test_users中没有country_destination这个字段

3. sessions.csv - web sessions log for users(网页浏览数据) 
- user_id(用户id): to be joined with the column ‘id’ in users table 
- action(用户行为) 
- action_type(用户行为类型) 
- action_detail(用户行为具体) 
- device_type(设备类型) 
- secs_elapsed(停留时长)

4. sample_submission.csv - correct format for submitting your predictions (提交预测的正确格式)

5.countries.csv

6.age_gender_bkts.csv

- 数据下载地址 

Airbnb 新用户的民宿预定预测-数据集

3. 数据探索

  • 基于jupyter notebook 和 python3

3.1 train_users_2和test_users文件

导包

# -*- coding:utf-8 -*-
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import sklearn as sk
# %matplotlib inline
import datetime
import os
import seaborn as sns#数据可视化
from datetime import date
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import LabelBinarizer
import pickle #用于存储模型
from sklearn.metrics import *
from sklearn.model_selection import *

读取文件

train = pd.read_csv("data/train_users_2.csv")
test = pd.read_csv("data/test_users.csv")
print(train[:3])
print(test[:3])

查看数据包含的特征

print('the columns name of training dataset:\n',train.columns)
print('the columns name of test dataset:\n',test.columns)

分析: 
1. train文件比test文件多了特征-country_destination 
2. country_destination是需要预测的目标变量 
3. 数据探索时着重分析train文件,test文件类似

查看数据信息

print(train.info())

分析: 
1. trian文件包含213451行数据,16个特征 
1. 每个特征的数据类型和非空数值 
2. date_first_booking空值较多,在特征提取时可以考虑删除

特征分析: 
1. date_account_created(帐号注册时间)

1.1 查看date_account_created前几行数据

print(train.date_account_created.head())

1.2 对date_account_created数据进行统计

print(train.date_account_created.value_counts().head())
print(train.date_account_created.value_counts().tail())

1.3获取date_account_created信息

print(train.date_account_created.describe())

1.4观察用户增长情况

dac_train = train.date_account_created.value_counts()
dac_test = test.date_account_created.value_counts()
#将数据类型转换为datatime类型
dac_train_date = pd.to_datetime(train.date_account_created.value_counts().index) #给1634个唯一日期建index
#print(dac_train_date)
dac_test_date = pd.to_datetime(test.date_account_created.value_counts().index)
#计算离首次注册时间相差的天数
dac_train_day = dac_train_date - dac_train_date.min()
# print(dac_train_day)
dac_test_day = dac_test_date - dac_train_date.min()
#motplotlib作图
plt.scatter(dac_train_day.days, dac_train.values, color = 'r', label = 'train dataset')
plt.scatter(dac_test_day.days, dac_test.values, color = 'b', label = 'test dataset')plt.title("Accounts created vs day")
plt.xlabel("Days")
plt.ylabel("Accounts created")
plt.legend(loc = 'upper left')
plt.show()

分析: 
1. x轴:离首次注册时间相差的天数 
2. y轴:当天注册的用户数量 
3. 随着时间的增长,用户注册的数量在急剧上升

来源:https://blog.csdn.net/datawhale/article/details/80847662

数据挖掘项目之Airbnb 新用户的民宿预定结果预测相关推荐

  1. 基于SSM+JSP实现的民宿预订网站(用户管理、房源管理、注册登录、民宿预定、订单管理、订单删除等)

    博客目录 基于SSM+JSP实现的民宿预订网站 实现功能截图 系统功能 使用技术 完整源码 基于SSM+JSP实现的民宿预订网站 本系统是SSM的民宿管理系统,可以实现用户管理.房源管理.用户注册登录 ...

  2. ssm毕设项目民宿预定管理系统20sxh(java+VUE+Mybatis+Maven+Mysql+sprnig)

    ssm毕设项目民宿预定管理系统20sxh(java+VUE+Mybatis+Maven+Mysql+sprnig) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HB ...

  3. 基于Spring Boot+vue的民宿预定管理系统的设计与实现

    基于Spring Boot+vue的民宿预定管理系统 研究的背景与意义 随着互联网技术的快速发展,网络时代的到来,网络信息也将会改变当今社会[1].各行各业在日常企业经营管理等方面也在慢慢的向规范化和 ...

  4. java计算机毕业设计基于web的民宿预定系统源程序+mysql+系统+lw文档+远程调试

    java计算机毕业设计基于web的民宿预定系统源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计基于web的民宿预定系统源程序+mysql+系统+lw文档+远程调试 本源码技术栈: ...

  5. 情人节民宿预定量同比增200% 北京建国门最火

    [TechWeb]2月15日,2019年情人节刚刚过去,国内在线民宿平台途家公布了昨天的民宿预订数据,2019年情人节期间民宿预定量比去年同期增长了200%. 由于情人节恰好是工作日,大家大多选择了本 ...

  6. 计算机毕业设计ssm民宿预定管理系统20sxh系统+程序+源码+lw+远程部署

    计算机毕业设计ssm民宿预定管理系统20sxh系统+程序+源码+lw+远程部署 计算机毕业设计ssm民宿预定管理系统20sxh系统+程序+源码+lw+远程部署 本源码技术栈: 项目架构:B/S架构 开 ...

  7. node.js+uniapp计算机毕业设计安卓在线民宿预定app(程序+APP+LW)

    该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程.欢迎交流 项目运行 环境配置: Node.js+ Vscode + Mysql5.7 + HBuilderX+Navicat11+Vue ...

  8. node.js毕业设计安卓在线民宿预定app(程序+APP+LW)

    该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程.欢迎交流 项目运行 环境配置: Node.js+ Vscode +Mysql5.7 + HBuilderX+Navicat11+Vue+ ...

  9. 【附源码】Java计算机毕业设计安卓在线民宿预定app(程序+LW+部署)

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  10. 计算机毕业设计Node.js+uniapp安卓在线民宿预定app(源码+程序+lw+远程调试)

    项目运行 环境配置: Node.js最新版+ Vscode + Mysql5.7 + HBuilderX+Navicat11+Vue. 项目技术: Express框架 + Node.js+ Vue 等 ...

最新文章

  1. fastd 3.0 开发的那些事
  2. python线上培训多少钱-Python人工智能在线培训班学费多少钱?
  3. 概率统计:第四章 随机变量的数字特征
  4. ngx_event_expire_timers
  5. ddm模型公式_简单判断目前行情——从股利贴现模型切入
  6. 如何使用用window.open()
  7. 大工20春计算机文化基础在线测试2,大工20春《计算机文化基础》在线测试2
  8. 疯狂Java讲义第五版读书笔记
  9. 结构性用工荒也是用工荒
  10. 什么是ArcGIS Engine?
  11. ClientDisconnectionReason(客户端断开原因)_羊豆豆_新浪博客
  12. 计算机上语音是什么符号,语音
  13. windows Server 2012修复(CVE-2016-2183)(CVE-2013-2566)(CVE-2015-2808)
  14. Xposed获取微信好友列表(通讯录),看看这是你要的详细吗
  15. lr背景虚化_LR调色教程,用LR调出后期唯美cosplay人像思路及案例(3)
  16. AARRR模型的使用注意事项【防坑提醒】
  17. 2022-2028全球COB摄影灯行业调研及趋势分析报告
  18. word之表格如何自动换页?
  19. 【202203-4】通信管理系统
  20. 大一寒假培训(三)——暴力枚举及妙用

热门文章

  1. 【博客559】更出色的网络监控采集方案---Telemetry(遥测技术)
  2. 【Pygame实战】强烈推荐:教你用百行代码编写一款《小蜜蜂历险记》不信?来看看(玩儿嗨了~)
  3. 自己的微信小程序学习笔记【1】——小程序开发工具的使用及项目文件说明
  4. Idear部署web项目过程
  5. 金融行业相关指标整理(超全面,欢迎交流~)
  6. 重装系统要花钱?教你免费一键重装win10系统
  7. ajax访问websever经验
  8. “松鼠症”患者看过来 整理电子相册的秘笈都在这了
  9. Stduino IDE stm32 最小系统 小蓝板 驱动继电器(五)
  10. 易捷行云新一代私有云平滑无感升级|轻运维之升级