Zillow Prize是一个拥有巨额百万美元奖金的比赛。竞赛共有两轮,只有在预赛中进入前100名的参赛选手才有资格参加第二轮比赛,因此我们的目标是进入前100。在这篇文章中,我用XGBOOSt得到Score约0.0645左右的成绩。

一、简介

第一轮预选赛2017年5月24日开始,在预选赛中,你将建立模型用于提高Zestimate的残留误差,帮助Zestimate进一步提高预测的精准度。因此,在这个百万美元的竞赛中,我们需要开发一个用于预测房子未出售价格的模型,对美国110㎡左右的房子的价值进行估计。

二、数据读取和预处理

1.导入依赖包

Pandas 是数据处理的大杀器,结合Numpy可以完成绝大多数的数据预处理任务。

2.读取数据

有三个文件需要读取:train_2016.csv、propertie_2016.csv和sample_submission.csv。利用pandas 的read_csv()将数据读取为dataframe。

文件描述 
Properties_2016.csv:包含2016年房屋特征的所有内容。
Train_2016.csv:2016年1月到2016年12月的训练数据集
Sample_submission.csv:正确提交文件的实例

3.创建训练集

将Properties_2016和Train_2016的数据根据parcelid字段进行组合,得到训练数据集。

4.将数据类型转换为float32

我们将训练集df_train中的float64数据类型的数据转换为分float32,用以节约我们的训练资源,加快模型的训练速度。

三、特征工程

参加了几次kaggle比赛,我比较认同kaggle是以特征工程和调参为主的说法。做特征工程这一步需要我们对数据集进行深入探索,这一步在Kernerls上有很多很优秀的Kernel可以进行参考。

训练集的数据量是比较大的,因此,通过学习大神们的kenerls,可以对数据集有一个比较详细的了解。在特征工程这一步我们主要做的就是特征预处理和特征选择。

第一步:样本选取

logerror是残留误差,通过下图的数据探索我们可以看到主要分布在[-0.4.0.4]这个范围内,因此将超出这个范围的的数据从训练集中删除。

第二步:特征选择

[‘parcelid’,’logerror’, ‘transactiondate’, ‘propertyzoningdesc’,’propertycountylandusecode’]与我们的训练无关,从训练集的参数中删除。
注:数据和特征决定机器学习的上限,而模型和调参是逼近这个上限。特征工程是kaggle竞赛中极为重要的一步,在后期我们需要花更多的时间来做Feature Engeneering。

四、模型选择和调参

在Zillow比赛中,我们的需要预测的是连续型的数值,可以算是一个回归问题。针对回归问题,我们有很多模型可以选择,在zillow竞赛中我选择了最近比较火的XGBOOST模型。

1.XGBOOST简介

XGBoost :eXtreme Gradient Boosting
XGBoost是由 Tianqi Chen(http://homes.cs.washington.edu/~tqchen)最初开发的实现可扩展,便携,分布式 gradient boosting (GBDT, GBRT or GBM) 算法的一个库,可以下载安装并应用于 C++,Python,R,Julia,Java,Scala,Hadoop,现在有很多协作者共同开发维护。

XGBoost 所应用的算法就是 gradient boosting decision tree,既可以用于分类也可以用于回归问题中。

2.XGBOOST的特点

我选XGBoost最重要的原因就是它的计算速度快,模型表现好。
一般来说,Gradient Boosting 的实现是比较慢的,因为每次都要先构造出一个树并添加到整个模型序列中。而XGBoost训练时可以用所有的CPU内核进行并行化建树,大大加快了训练的速度。同时,XGBoost在预测问题中模型表现非常好,在kaggle比赛中,很多冠军在赛后的分享中都提及使用XGBoost。

3.XGBoost训练和调参

调参这个步骤花了我挺多时间。在进行了简单的特征工程后,我的大部分时间都花在了调参上,XGBoost的调参是比较重要的,过后我会专门写一篇文章来介绍XGBoost调参部分。

这里比较笨的思路就是不断尝试参数。比如max_depth开始设置为一个比较常规的值10,然后下一次设置为8,模型有提高就用6再尝试,否则尝试12。依次对其他参数进行调试。

五、预测并提交Kaggle平台

最后一步就是将我们的训练模型在预测集上进行预测,并提交预测结果到Kaggle平台。

目前的排名在25%,还需要不断的优化来提高成绩。

完整代码我放到了百度云,关注微信公众号:kaggle数据分析 ,后台回复

zillow会有完整的代码打包下载。

Kaggle

利用XGboost简单粗暴zillow竞赛25%相关推荐

  1. 11月25日科技资讯|网易回应裁撤生病员工:确实存在简单粗暴不近人情行为

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧.扫描上方二维码进入 CSDN App 可以收听御姐萌妹 Sty ...

  2. 【DIY】废物利用,最简单粗暴便宜的DIY定时器方法,没有之一

    微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 山不在高,有仙则名.水不在深,有龙则灵. 作品不用高端,实用就行. 这次废物利用,做一 ...

  3. 利用安卓SQLite修改QQ运动步数方法分享 简单粗暴

    这个方法简单粗暴,比昨天的安卓用户秒刷QQ运动步数教程+软件下载更简单.亲测百分百成功,根据教程图片的步骤找到文件进行编辑保存即可. 1.自行百度搜索"安卓SQLite汉化版"下载 ...

  4. 利用XGBoost、Information Value、SHAP寻找“小北极星“指标与分层处理

    利用XGBoost.Information Value.SHAP寻找"小北极星"指标与分层处理 前言 "小北极星"指标 Information Value(IV ...

  5. 谷歌简单粗暴“复制-粘贴”数据增广,刷新COCO目标检测与实例分割新高度

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 近日,谷歌.UC伯克利与康奈尔大学的研究人员公布了一篇论文 Sim ...

  6. 一个简单粗暴的前后端分离方案

    项目背景 刚刚参加完一个项目,背景:后端是用java,后端服务已经开发的差不多了,现在要通过web的方式对外提供服务,也就是B/S架构.后端专注做业务逻辑,不想在后端做页面渲染的事情,只向前端提供数据 ...

  7. ML之xgboost:利用xgboost算法(sklearn+GridSearchCV)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测)

    ML之xgboost:利用xgboost算法(sklearn+GridSearchCV)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测) 目录 输出结果 ...

  8. ML之xgboost:利用xgboost算法(sklearn+3Split+调参曲线)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测)

    ML之xgboost:利用xgboost算法(sklearn+3Split+调参曲线)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测) 目录 输出结果 设 ...

  9. matlab求傅里叶级数展开式_简单粗暴傅里叶级数

    简单粗暴傅里叶级数 楠木wnn2000@hust.edu.cn 为什么写本文? 作为笔记. 为什么给文章取这个名字? 前段日子拜读过某pku学霸的<简单粗暴 TensorFlow>.这篇教 ...

最新文章

  1. 标注工具_语料标注工具(3)
  2. 【Python】如何学好Python
  3. ubuntu如何实现双屏显示(转)
  4. VTK:PolyData之Silhouette
  5. 数值分箱与one-hot
  6. 线程打印_面试题:用程序实现两个线程交替打印 0~100 的奇偶数
  7. linux如何运行多个硬盘,一个硬盘如何装两个Linux
  8. android so abi适配,Android NDK学习(六): so文件兼容之abiFilters的使用
  9. web developer tips (65): 快速创建一个挂接SQL表的GridView
  10. Spring框架参考手册(4.2.6版本)翻译——第三部分 核心技术 6.4.4 延迟初始化的bean...
  11. 多精度数带余除法_算法笔记 (一) 高精度
  12. JAVA 配置文件 路径_Java配置文件读取和路径设置
  13. couldn't connect to the device trackpad
  14. 《C陷阱与缺陷》学习笔记(1):这本书值得看吗?
  15. python给csv文件添加表头
  16. 核酸检测系统的潜在性能问题猜想
  17. [译]关于Android图形系统一些事实真相
  18. 《大话设计模式 下》
  19. tushare更新,get_k_data支持分时k线数据,可替代以前的get_hist_data
  20. [已解决]显示器分屏只能复制无法扩展

热门文章

  1. java判断栈空_java中栈的应用-判断分隔符是否合理
  2. 7-6 混合类型数据格式化输入 (C语言)
  3. mysql三大范式 答案_数据库三大范式定义与理解
  4. 转载:《TypeScript 中文入门教程》 4、类
  5. Asp.net Web API 返回Json对象的两种方式
  6. 在pcDuino上运行Python
  7. MVVM设计模式之精髓简化
  8. html代码转换成为纯文本
  9. SQL查询结果集对注入的影响及利用
  10. GTK+图形化应用程序开发学习笔记