您的位置:首页 > 其它

Story 2---Kaggle房价预测

2017-12-03 15:33 176 查看
第一个O2O我其实主要讲了思路,大部分的代码并没有去实现。究其原因还是因为能力不够......感觉天池的题目前对我还是有点难了,找不到下手点。所以还是先回归kaggle,希望仔细研究几个题目后再转战天池。

房价预测是kaggle的Getting Started的三个题目之一,是入门必备,这篇文章就围绕这个题目开始记录,其中包括了详细的代码。

1.题目以及数据:

官方说明

简单来说,就是给你很多房子的详细数据以及对应的价格,现在给你一些新的房子的信息,让你预测它们的价格。这种题目和天池的最大差别就是维度少了很多,就是问题变得直观了很多,而天池的题我们需要很多转化才能变得好处理。

2.读取及观察数据



这时有个重要的步骤是看看训练数据的分布:



代码中已经做了log转换,目的就是让我们的数据变为正态分布的。而数据变换的目的在于使数据的呈现方式接近我们所希望的前提假设,从而更好的进行统计推断

3.数据清洗





value_counts( )这里非常简便 !









这里要提一点,pandas的使用非常重要,用好了能够省略很多代码。关于一些常规以及骚操作可以移步我的另一篇文章



到这里数据清洗就结束了,接下来将进行建模步骤。

4.建模



很明显这里是个回归问题,这里上一张sklearn中的机器学习算法选择图:



我们可以看到回归里面主要包括:SGD(随机梯度下降回归),lasso,岭回归。接下来我们就先用岭回归跑一跑,之所以选择岭回归是因为这种回归在多特征情况下时,我们可以直接把所有特征放进去建模,不需要考虑特征选取。



接下来使用交叉验证去找到模型最佳参数,关于交叉验证可以看看我的这篇博文。简单来说,交叉验证的好处就是考虑了多种可能之后,尽全力找到你的数据最好的划分方式,用这种方式算出最好的参数。



然后我们可以可视化参数和分数之间的关系:



因为我们的评分方法是去看误差,所以肯定是分数越低效果越好,我们可以从图中看出,参数在10-20左右时,误差来到了一个最小值。

在这之后我们来看看RandomForest(随机森林),这里回顾下story1里面出现过的公式:Bagging + 决策树 = 随机森林


这个算法我会之后在某篇博文中详细说明,这里先来看训练模型以及可视化结果的代码:



这样,我们就通过sklearn简单的使用了两个模型了,但是这样在竞赛中正确率往往是不够的,一般的解决方式是Ensemble(集成学习)。这里面主要有Bagging,Boosting以及Stacking等。关于这几个集成学习方法可以看看这篇博文,目前我也还没完全弄懂。



这里最后的y_final就是结果了,这里我提交到了Kaggle上去,截至现在有2000+支队伍,这个结果排名900+。

接下来我们尝试优化一下(尝试高级一点的Ensemble)





可以看到效果确实好了一点!

本来准备接下来上XgBoost大杀器的,但是因为XgBoost还没有安装成功(逃

....两天后我回来了,我在网上找到了py3.6的XgBoost并安装成功了,这里接着写。

其实和之前的也没什么不同,代码如下:



可以清楚的看到效果的提升!不愧是大杀器!

但是呢,最后结果在kaggle上只能排700+,说明还有很多地方可以改进,之后再来补充吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: