python教程如何用Python在10分钟内建立一个预测模型

2019-02-09 13:23

python教程如何用Python在10分钟内建立一个预测模型



  大数据文摘作品,欢迎个人转发朋友圈,自媒体、媒体、机构转载务必申请授权,后台留言“机构名称+文章标题+转载”,申请过授权的不必再次申请,只要按约定转载即可,

  最近,我从孙子(指《孙子兵法》——译者注)那里学到了一些策略:速度和准备

python教程如何用Python在10分钟内建立一个预测模型

  “兵之情主速,乘人之不及,由不虞之道,攻其所不戒也。”(《孙子兵法•九地篇》)无备为战之大患,有备无患,其乃至德也。(哈哈,译者自己写了这句,想必大家能明白。)

  这与数据科学博客有什么关系呢?这是你赢得竞争和编程马拉松的关键。如果你比竞争对手准备得更充分,你学习、迭代执行的速度越快,那么你就取得更好的名次,带来更好的结果。

  由于近几年来,Python用户数量上涨及其本身的简洁性,使得这个工具包对数据科学世界的Python专家们变得有意义。本文将帮助你更快更好地建立第一个预测模型。绝大多数优秀的数据科学家和kagglers建立自己的第一个有效模型并快速提交。这不仅仅有助于他们领先于排行榜,而且提供了问题的基准解决方案。

python教程如何用Python在10分钟内建立一个预测模型

  我总是集中于投入有质量的时间在建模的初始阶段,比如,假设生成、头脑风暴、讨论或理解可能的结果范围。所有这些活动都有助于我解决问题,并最终让我设计出更强大的商业解决方案。为什么你要在前面花费这段时间,这有充分的理由:

  你不带有其它数据观点或想法的偏见(我总是建议,在深入研究数据之前做假设生成)

  这个阶段需要投入高质量时间,因此我没有提及时间表,不过我建议你把它作为标准的做法。这有助于你建立建立更好地预测模型,在后面的阶段的只需较少的迭代工作。让我们来看看建立第一个模型的剩余阶段的时间表:

  在我刚开始成为数据科学家的时候,数据探索占据了我大量的时间。不过,随着时间的推移,我已经把大量的数据操作自动化了。由于数据准备占据建立第一个模型工作量的50%,自动化的好处是显而易见的。

  这是我们的第一个基准模型,我们去掉任何特征设计。因此,描述分析所需的时间仅限于了解缺失值和直接可见的大的特征。在我的方法体系中,你将需要2分钟来完成这一步(假设,100000个观测数据集)。

  有许多方法可以解决这个问题。对于我们的第一个模型,我们将专注于智能和快速技术来建立第一个有效模型。

  用均值、中位数或其它简单方法填补缺失值:均值和中位数填补都表现良好,大多数人喜欢用均值填补但是在有偏分布的情况下我建议使用中位数。其它智能的方法与均值和中位数填补类似,使用其它相关特征填补或建立模型。比如,在Titanic生存挑战中,你可以使用乘客名字的称呼,比如:“Mr.”, “Miss.”,”Mrs.”,”Master”,来填补年龄的缺失值,这对模型性能有很好的影响。

  填补缺失的分类变量:创建一个新的等级来填补分类变量,让所有的缺失值编码为一个单一值比如,“New_Cat”,或者,你可以看看频率组合,使用高频率的分类变量来填补缺失值。

  根据不同的业务问题,我推荐使用GBM或RandomForest技术的任意一种。这两个技术可以极其有效地创建基准解决方案。我已经看到数据科学家通常把这两个方法作为他们的第一个模型同时也作为最后一个模型。这最多用去4到5分钟。

  有各种各样的方法可以验证你的模型性能,我建议你将训练数据集划分为训练集和验证集(理想的比例是70:30)并且在70%的训练数据集上建模。现在,使用30%的验证数据集进行交叉验证并使用评价指标进行性能评估。最后需要1到2分钟执行和记录结果。

  本文的目的不是赢得比赛,而是建立我们自己的基准。让我们用python代码来执行上面的步骤,建立你的第一个有较高影响的模型。

  首先我假设你已经做了所有的假设生成并且你擅长使用python的基本数据科学操作。我用一个数据科学挑战的例子来说明。让我们看一下结构:

python教程如何用Python在10分钟内建立一个预测模型

  步骤4:确定a)ID变量 b)目标变量 c)分类变量 d)数值变量 e)其他变量。

  步骤7:创建分类变量的标签编码器,将数据集分割成训练和测试集,进一步,将训练数据集分割成训练集和测试集。

  步骤8:将填补和虚假(缺失值标志)变量传递到模型中,我使用随机森林来预测类。

python教程如何用Python在10分钟内建立一个预测模型

python教程如何用Python在10分钟内建立一个预测模型

  栏目介绍:可视化专栏从2016年起打算分为两块。一块以翻译为主,把网上关于可视化的好文章推荐给读者。另一块以编程为主,从手把手系列文章起步,把可视化工具的使用方法介绍给读者。以后会考虑做些可视化相关的小项目。

  加入要求:有志愿者工作热情、学习热情。基本保证每周3小时的志愿者服务时间。英语读写能力至少达到六级水平。如果从事以编程为主的志愿者工作,要求会Python或R语言,或者有其它语言基础,愿意学习可视化相关编程知识。在大数据文摘后台回复“志愿者”可了解更多。