【6A版】用Python建立预测模型的方法_第1页
【6A版】用Python建立预测模型的方法_第2页
【6A版】用Python建立预测模型的方法_第3页
【6A版】用Python建立预测模型的方法_第4页
【6A版】用Python建立预测模型的方法_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、7A版优质实用文档用Python建立预测模型的方法由于近几年来,Python用户数量上涨及其本身的简洁性,使得这个工具包对数 据科学世界的Python专家们变得有意义。本文将帮助你更快更好地建立第一个 预测模型。绝大多数优秀的数据科学家和 kagglers建立自己的第一个有效模型 并快速提交。这不仅仅有助于他们领先于排行榜,而且提供了问题的基准解决方 案。预测模型的分解过程我总是集中于投入有质量的时间在建模的初始阶段, 比如,假设生成、头脑风暴、 讨论或理解可能的结果范围。所有这些活动都有助于我解决问题, 并最终让我设 计出更强大的商业解决方案。为什么你要在前面花费这段时间,这有充分的理由:1

2、 .你有足够的时间投入并且你是无经验的(这是有影响的)2 .你不带有其它数据观点或想法的偏见(我总是建议,在深入研究数据之前 做假设生成)3 .在后面的阶段,你会急于完成该项目而没有能力投入有质量的时间了。这个阶段需要投入高质量时间,因此我没有提及时间表,不过我建议你把它作为 标准的做法。这有助于你建立建立更好地预测模型, 在后面的阶段的只需较少的 迭代工作。让我们来看看建立第一个模型的剩余阶段的时间表:1 .数据描述性分析一一50%的时间2 .数据预处理(缺失值和异常值修复)一一40%的时间3 .数据建,K 4%的时间4 .性能预测6%的时间让我们一步一步完成每个过程(每一步投入预测的时间)

3、:阶段1 :描述性分析/数据探索在我刚开始成为数据科学家的时候, 数据探索占据了我大量的时间。 不过,随着时间的推移,我已经把大量的数据操作自动化了。由于数据准备占据建立第一个模型工作量的50% ,自动化的好处是显而易见的。这是我们的第一个基准模型,我们去掉任何特征设计。因此,描述分析所需的时间仅限于了解缺失值和直接可见的大的特征。在我的方法体系中,你将需要2分钟来完成这一步(假设,100000个观测数据集)。我的第一个模型执行的操作:1 .确定ID,输入特征和目标特征2 .确定分类和数值特征3 .识别缺失值所在列阶段2 :数据预处理(缺失值处理)有许多方法可以解决这个问题。对于我们的第一个模

4、型,我们将专注于智能和快速技术来建立第一个有效模型。为缺失值创建假标志:有用,有时缺失值本身就携带了大量的信息。用均值、中位数或其它简单方法填补缺失值: 均值和中位数填补都表现良好,大多数人喜欢用均值填补但是在有偏分布的情况下我建议使用中位数。其它智能的方法与均值和中位数填补类似,使用其它相关特征填补或建立模型。比如,在Titanic生存挑战中,你可以使用乘客名字的称呼,比如:“ Mr. ",“ Miss. :' Mrs. "," Master ”,来填补年龄的缺失值,这对模型性 能有很好的影响。填补缺失的分类变量:创建一个新的等级来填补分类变量, 让所有

5、的缺失值编码为一个单一值比如,"New_Cat ",或者,你可以看看频率组合,使用高频率的分类变量来填补缺失值。由于数据处理方法如此简单,你可以只需要 3到4分钟来处理数据。阶段3 :数据建模根据不同的业务问题,我推荐使用GBM或RandomForest技术的任意一种。这两个技术可以极其有效地创建基准解决方案。我已经看到数据科学家通常把这两个方法作为他们的第一个模型同时也作为最后一个模型。这最多用去4到5分钟。阶段4 :性能预测有各种各样的方法可以验证你的模型性能,我建议你将训练数据集划分为训练集 和验证集(理想的比例是70: 30)并且在70%的训练数据集上建模。现在,使

6、 用30%的验证数据集进行交叉验证并使用评价指标进行性能评估。最后需要1到2分钟执行和记录结果。本文的目的不是赢得比赛,而是建立我们自己的基准。让我们用python代码来 执行上面的步骤,建立你的第一个有较高影响的模型。让我们开始付诸行动首先我假设你已经做了所有的假设生成并且你擅长使用python的基本数据科学操作。我用一个数据科学挑战的例子来说明。让我们看一下结构:步骤1 :导入所需的库,读取测试和训练数据集。# 导入 pandas、numpy 包,导入 LabelEncoder、random、 RandomForestClassifier 、GradientBoostingClassifi

7、er 函数 importpandasaspdimportnumpyasnpfromsklearn.preprocessingimportLabelEncoderimportrandomfromsklearn.ensembleimportRandomForestClassifierfromsklearn.ensembleimportGradientBoostingClassifier# 读取训练、测试数据集train=pd.read_csv('C:/Users/AnalyticsVidhya/Desktop/challenge/Train.cs v')test=pd.read_c

8、sv('C:/Users/AnalyticsVidhya/Desktop/challenge/Test.csv' )# 创建训练、测试数据集标志train'Type'='Train' test'Type'='Test'fullData=pd.concat(train,test,aGis=0)#联合训练、测试数据集步骤2:该框架的第二步并不需要用到python ,继续下一步步骤4:确定a)ID变量b)目标变量c)分类变量d)数值变量e)其他变量。为骤3 :杳看数据集的列名或11Average A.C.Eai j n

9、oeAverage CnKarLDard.ransactioriBalarce.Tnri&t«rHo me Loanlr vestmenL Tai. Sailng.B3 ndlrt¥estrrw!nt_in.CfUllD irrMjnata.columns#3r觎画助购CWQ0C1Q1S OCT 叩 gWOOWTDigDWQOO£箱54小川"口多力V J T552&回232& 11174636 526M2U犯打SO阳喀iFftfilOM12 d幻皿42 246&&1fullDFata.head(10)#蛀显/I、斐

10、女山八王小印1210条记DOOCXMO0 MOCrtM)ImOOOQOOC0 000000o ooooooOOCXMWO8 200000fum E)#5你可以使用describe。23 anon)m4WOOG彳嗷在看j moo数俏域的概要S97CKKO33 9OQ0CK)i-.ata.describe(1ft 480000'millRA7%nf¥Ml?9fii7R¥im;t% R7mnnrwrinoID_col='REF_NO'target_col="Account.Status"cat_cols='children

11、9;,'age_band','status','occupation','occupation_partner', 'home_status','familyjncome','self_employed','self_employed_partner','y ear_last_moved','TVarea','post_code','post_area','gender','reg

12、ion'num_cols=list(set(list(fullData.columns)-set(cat_cols)-set(ID_col)-set(target_col)-set(data_col)other_col='Type'#为训练、测试数据集设置标识符步骤5 :识别缺失值变量并创建标志fullData.isnull().any()# 返回 True 或 False, True 意味着有缺失值而 False 相反num_cat_cols=num_cols+cat_cols#组合数值变量和分类变量# 为有缺失值的变量创建一个新的变量# 对缺失值标志为1,否则为0f

13、orvarinnum_cat_cols:iffullDatavar.isnull().any()=True:fullDatavar+'_NA'=fullDatavar.isnull()G1步骤6 :填补缺失值# 用均值填补数值缺失值fullDatanum_cols=fullDatanum_cols.fillna(fullDatanum_cols.mean(),inplace=True)# 用-9999填补分类变量缺失值fullDatacat_cols=fullDatacat_cols.fillna(value=-9999)步骤7:创建分类变量的标签编码器,将数据集分割成训练和测

14、试集,进一步,将训练数据集分割成训练集和测试集。# 创建分类特征的标签编码器forvarincat_cols:number=LabelEncoder()fullDatavar=number.fit_transform(fullDatavar.astype('str')# 目标变量也是分类变量,所以也用标签编码器转换fullData"Account.Status"=number.fit_transform(fullData"Account.Status".astype('str')train=fullDatafullData

15、'Type'='Train'test=fullDatafullData'Type'='Test'train'is_train'=np.random.uniform(0,1,len(train)<=.75Train,Validate=traintrain'is_train'=True,traintrain'is_train'=False步骤8:将填补和虚假(缺失值标志)变量传递到模型中,我使用随机森林来预 测类。features=list(set(list(fullData.co

16、lumns)-set(ID_col)-set(target_col)-set(other_col)G_train=Trainlist(features).valuesy_train=Train"Account.Status".valuesG_validate=Validatelist(features).valuesy_validate=Validate"Account.Status".valuesG_test=testlist(features).valuesrandom.seed(100)rf=RandomForestClassifier(n_estimators=1000)rf.fit(G_train,y_train)步骤9 :检查性能做出预测status=rf.predict_proba(G_validate)fpr,tpr,_=roc_curve(y_validate,status

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论