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

摘要 

本文主要根据对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

 

  • 0
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
美国著名共享民宿网站 Airbnb 开放的民宿信息和住客评价数据,包括民宿的位置、房间、配置、价格、住客的评分和自然语言评论等。目前Airbnb开放数据的城市如下表所示。 城市名称 省份和地区 所在国家 Amsterdam North Holland The Netherlands Antwerp Flemish Region Belgium Asheville North Carolina United States Athens Attica Greece Austin Texas United States Barcelona Catalonia Spain Berlin Berlin Germany Boston Massachusetts United States Brussels Brussels Belgium Chicago Illinois United States Copenhagen Hovedstaden Denmark Denver Colorado United States Dublin Leinster Ireland Edinburgh Scotland United Kingdom Geneva Geneva Switzerland Hong Kong Hong Kong China London England United Kingdom Los Angeles California United States Madrid Comunidad de Madrid Spain Mallorca Islas Baleares Spain Manchester England United Kingdom Melbourne Victoria Australia Montreal Quebec Canada Nashville Tennessee United States New Orleans Louisiana United States New York City New York United States Northern Rivers New South Wales Australia Oakland California United States Paris France France Portland Oregon United States Quebec City Quebec Canada San Diego California United States San Francisco California United States Santa Cruz County California United States Seattle Washington United States Sydney New South Wales Australia Toronto Ontario Canada Trentino Trentino-Alto Adige_Südtirol Italy Vancouver British Columbia Canada Venice Veneto Italy Victoria British Columbia Canada Vienna Vienna Austria Washington D.C.District of Columbia United States
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值