用Python建立预测模型的方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用Python建立预测模型的方法

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

预测模型的分解过程

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

1. 你有足够的时间投入并且你是无经验的(这是有影响的)

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

3.在后面的阶段,你会急于完成该项目而没有能力投入有质量的时间了。

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

1. 数据描述性分析一一50%的时间

2. 数据预处理(缺失值和异常值修复)一一40%的时间

3. 数据建模一一4%的时间

4. -------------------- 性能预测6%的时间

让我们一步一步完成每个过程(每一步投入预测的时间):

阶段1 :描述性分析/数据探索

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

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

我的第一个模型执行的操作:

1. 确定ID,输入特征和目标特征

2. 确定分类和数值特征

3. 识别缺失值所在列

阶段2 :数据预处理(缺失值处理)

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

•为缺失值创建假标志:有用,有时缺失值本身就携带了大量的信息。

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

“ Miss. ” , ” Mrs. ”,来填补年龄的缺失值,这对模型性能有很好的影响。

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

由于数据处理方法如此简单,你可以只需要3到4分钟来处理数据。

阶段3 :数据建模

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

阶段4 :性能预测

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

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

让我们开始付诸行动

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

步骤1:导入所需的库,读取测试和训练数据集。

# 导入 pan das、n umpy 包,导入 LabelE ncoder 、random、Ran domForestClassifier 、Gradie ntBoost in gClassifier 函数

import pan das as pd

import n umpy as np

fromsklearn.preprocessi ng import LabelE ncoder

import ran dom

fromsklear n.en semble import Ran domForestClassifier

from sklearn.e nsembleimport Gradie ntBoost in gClassifier

#读取训练、测试数据集

trai n=pd.read_csv('C:/Users/A nalyticsVidhya/Desktop/challe nge/Trai n.csv')

test=pd.read_csv('C:/Users/A nalyticsVidhya/Desktop/challe nge/Test.csv')

#创建训练、测试数据集标志

trai n['Type']='Trai n'

test['Type']='Test'

fullData =pd.c on cat([trai n, test],axis=O) # 联合训练、测试数据集

步骤2 :该框架的第二步并不需要用到python,继续下一步。

步骤3 :查看数据集的列名或概要

fullData.colum ns # 显示所有的列名称

fullData.head(10) # 显示数据框的前10条记录

相关文档
最新文档