介绍

鉴于Python在过去几年中的兴起及其简洁性,对于数据科学领域的Python学家意义重大。这篇文章会用最容易的方式引导你更快地构建第一个预测模型。

出乎意料的简单!10分钟用python进行人工智能建立预测模型

揭秘预测建模的过程

我一直专注于在模型构建的初始阶段投入质量时间,如假设生成/脑力激荡会议/讨论或理解领域。所有这些活动都帮助我解决问题,最终导致我设计出更强大的业务解决方案。有充分理由说明你应该事先花时间:

1. 你有足够的时间进行投资而且你很新鲜(它有影响力)

2. 您不会对其他数据点或想法产生偏见(我总是建议,在深入挖掘数据之前进行假设生成)

3. 在稍后阶段,您将急于完成项目并且无法花费高质量的时间

这个阶段需要一个高质量的时间,所以我不在这里提及时间表,我建议你把它作为标准做法。它将帮助您构建更好的预测模型,从而减少后期工作的迭代次数。让我们看看第一个模型构建中的剩余阶段和时间轴:

让我们看看第一个模型构建中的剩余阶段和时间轴

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

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

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

4. 性能评估 - 6%的时间

PS这是仅用于第一个模型构建的时间的分割

让我们一步一步地完成这个过程(估算每个步骤花费的时间):

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

作为数据科学家的最初几天,数据探索过去常常花费很多时间。随着时间的推移,已经对数据进行了大量自动化操作。鉴于数据准备占据了构建第一个模型的50%的工作,自动化的好处是显而易见的。可以查看" 7个数据探索步骤 "来查看最常见的数据探索操作。

Tavish在他的文章中已经提到,随着先进的机器学习工具的竞争,执行此任务所花费的时间已经大大减少。由于这是我们的第一个基准模型,我们不再使用任何类型的特征工程。因此,您可能需要进行描述性分析的时间仅限于知道缺失值和直接可见的大特征。在我的方法中,您需要2分钟才能完成此步骤(假设,数据集中有100,000个观察值)。

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

1. 识别ID,输入和目标功能

2. 识别分类和数字特征

3. 识别缺少值的列

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

有各种方法来处理它。对于我们的第一个模型,我们将专注于智能和快速的技术来构建您的第一个有效模型(这些已经由Tavish在他的文章中讨论,我添加了一些方法)

· 为缺失值创建虚拟标志:它有效,有时缺失值本身带有大量信息。

· 使用均值/中位数/任何其他最简单的方法估算缺失值:平均值和中位数估算表现良好,大多数人更喜欢用平均值进行估算,但如果分布偏差,我建议您使用中位数。其他智能方法通过使用其他相关特征或构建模型的类似案例均值和中值插补来估算值。例如:在泰坦尼克号的生存挑战中,您可以使用乘客称呼来估算Age的缺失值,如"Mr.","Miss。","Mrs。","Master"等,这对模型性能有很好的影响。

· 估算分类变量的缺失值:创建一个新级别来归类分类变量,以便将所有缺失值编码为单个值,例如"New_Cat",或者您可以查看频率组合并使用具有更高频率的值来估算缺失值。

使用这种简单的数据处理方法,您可以将处理数据的时间缩短到3-4分钟

阶段3.

数据建模

建议使用任何一种 GBM / 随机森林技术,具体取决于业务问题。这两种技术对于创建基准解决方案非常有效。我见过数据科学家经常使用这两种方法作为他们的第一个模型,在某些情况下,它也可以作为最终模型。这将花费最长的时间(约4-5分钟)。

第4阶段。业绩估算:

有多种方法可以验证您的模型性能,我建议您将您的列车数据集划分为Train并验证(理想情况下为70:30)并根据70%的列车数据集构建模型。现在,使用30%的验证数据集对其进行交叉验证,并使用评估指标评估性能。这最终需要1-2分钟来执行和记录。

本文的目的不是为了赢得竞争,而是为自己建立一个基准。让我们看一下python代码来执行上述步骤,并构建您的第一个具有更高影响力的模型。

让我们开始付诸行动

我假设你已经完成了所有的假设生成,并且你对使用python的基础数据科学很好。我用数据科学挑战的例子来说明这一点。让我们来看看结构:

第1步:导入所需的库并读取测试和训练数据集。附加两者。

import pandas as pdimport numpy as npfrom sklearn.preprocessing import LabelEncoderimport randomfrom sklearn.ensemble import RandomForestClassifierfrom sklearn.ensemble import GradientBoostingClassifiertrain=pd.read_csv('C:/Users/Analytics Vidhya/Desktop/challenge/Train.csv')test=pd.read_csv('C:/Users/Analytics Vidhya/Desktop/challenge/Test.csv')train['Type']='Train' #Create a flag for Train and Test Data settest['Type']='Test'fullData = pd.concat([train,test],axis=0) #Combined both Train and Test Data set

第2步:Python中不需要框架的第2步。到下一步。

第3步:查看数据集的列名称/摘要

fullData.columns # This will show all the column namesfullData.head(10) # Show first 10 records of dataframefullData.describe() #You can look at summary of numerical fields by using describe() function

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

ID_col = ['REF_NO']target_col = ["Account.Status"]cat_cols = ['children','age_band','status','occupation','occupation_partner','home_status','family_income','self_employed', 'self_employed_partner','year_last_moved','TVarea','post_code','post_area','gender','region']num_cols= list(set(list(fullData.columns))-set(cat_cols)-set(ID_col)-set(target_col)-set(data_col))other_col=['Type'] #Test and Train Data set identifier

步骤5:识别具有缺失值的变量并为这些变量创建标志

fullData.isnull().any()#Will return the feature with True or False,True means have missing value else False

num_cat_cols = num_cols+cat_cols # Combined numerical and Categorical variables

#Create a new variable for each variable having missing value with VariableName_NA

# and flag missing value with 1 and other with 0

for var in num_cat_cols:

if fullData[var].isnull().any()==True:

fullData[var+'_NA']=fullData[var].isnull()*1

第6步:估算缺失值

#Impute numerical missing values with meanfullData[num_cols] = fullData[num_cols].fillna(fullData[num_cols].mean(),inplace=True)#Impute categorical missing values with -9999fullData[cat_cols] = fullData[cat_cols].fillna(value = -9999)

步骤7:为分类变量创建标签编码器并将数据集拆分为训练和测试,进一步将列车数据集拆分为训练和验证

#create label encoders for categorical featuresfor var in cat_cols: number = LabelEncoder() fullData[var] = number.fit_transform(fullData[var].astype('str'))#Target variable is also a categorical so convert itfullData["Account.Status"] = number.fit_transform(fullData["Account.Status"].astype('str'))train=fullData[fullData['Type']=='Train']test=fullData[fullData['Type']=='Test']train['is_train'] = np.random.uniform(0, 1, len(train)) <= .75Train, Validate = train[train['is_train']==True], train[train['is_train']==False]

步骤8 :将插补和虚拟(缺失值标志)变量传递到建模过程。我正在使用随机森林预测班级

features=list(set(list(fullData.columns))-set(ID_col)-set(target_col)-set(other_col))x_train = Train[list(features)].valuesy_train = Train["Account.Status"].valuesx_validate = Validate[list(features)].valuesy_validate = Validate["Account.Status"].valuesx_test=test[list(features)].valuesrandom.seed(100)rf = RandomForestClassifier(n_estimators=1000)rf.fit(x_train, y_train)

第9步 :检查性能并进行预测

status = rf.predict_proba(x_validate)fpr, tpr, _ = roc_curve(y_validate, status[:,1])roc_auc = auc(fpr, tpr)print roc_aucfinal_status = rf.predict_proba(x_test)test["Account.Status"]=final_status[:,1]test.to_csv('C:/Users/Analytics Vidhya/Desktop/model_output.csv',columns=['REF_NO','Account.Status'])

并提交!

结束笔记

希望这篇文章能让您开始编写自己的10分钟代码。Kaggle的大多数大师也是这么起步的。有问题和资料关注公众号“python_dada"。

Python Train_出乎意料的简单!10分钟用python建立人工智能预测模型相关推荐

  1. 零基础小白10分钟用Python搭建小说网站!网友:我可以!

    都说Python什么都能做,本来我是不信的!直到我在CSDN站内看到了一件真事儿:一位博主贴出了自己10分钟用Python搭建小说网站的全过程!全程只用了2步操作,简直太秀了!!-- 第一步:爬取小说 ...

  2. 10分钟用Python爬取最近很火的复联4影评

    10分钟用Python爬取最近很火的复联4影评 欲直接下载代码文件,关注我们的公众号哦!查看历史消息即可! <复仇者联盟4:终局之战>已经上映快三个星期了,全球票房破24亿美元,国内票房破 ...

  3. 10分钟用Python告诉你两个机器人聊天能聊出什么火花

    10分钟用Python告诉你两个机器人聊天能聊出什么火花 欲直接下载代码文件,关注我们的公众号哦!查看历史消息即可! 现在不是讲各种各样的人工智能嘛,AI下棋,AI客服,AI玩家--其实我一直很好奇, ...

  4. python如何爬取网页视频_快就完事了!10分钟用python爬取网站视频和图片

    原标题:快就完事了!10分钟用python爬取网站视频和图片 话不多说,直接开讲!教你如何用Python爬虫爬取各大网站视频和图片. 638855753 网站分析: 我们点视频按钮,可以看到的链接是: ...

  5. 每天10分钟用python学数据分析_用Python做数据分析,Numpy,Pandas,matp

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 用Python做数据分析,Numpy,Pandas,matplotlib是怎么也绕不开的三个包,我最开始学习pandas是看的<利用Python进行 ...

  6. 程序员如何 10 分钟用 Python 画出蒙娜丽莎?

    之前看到过很多头条,说哪国某人坚持了多少年自学使用excel画画,效果十分惊艳.对于他们的耐心我十分敬佩. 但是作为一个程序员,自然也得挑战一下自己. 这种需求,我们十分钟就可以完成! 基本思路 ! ...

  7. 【Python入门教程】教你如何10分钟入门Python!(超详细)

    前言:我们在职业生涯中都需要通过各种方式来提升自身的专业能力,在这里我们建了一个Q群[856833272]欢迎大家来交流学习,更多资料免费分享还有免费直播课领取!学习路上有伙伴,学习路上不孤单!(也可 ...

  8. 深度学习入门---10分钟学会Python

    本文转载自https://www.stavros.io/tutorials/python/ Properties属性 Python is strongly typed (i.e. types are ...

  9. python 装饰器装饰类_5分钟的Python装饰器指南

    python 装饰器装饰类 重点 (Top highlight) There's no doubt that Python decorators are one of the more advance ...

最新文章

  1. Happy new year 2009
  2. javaswing引入百度地图_【react】React怎么引用百度地图
  3. JavaScript基础学习之数据类型(一)
  4. 偶尔用得上的MySQL操作
  5. Educational Codeforces Round 37-F.SUM and REPLACE (线段树,线性筛,收敛函数)
  6. android导航屏幕,发现具有软件导航栏的Android设备的真实屏幕尺寸(以像素为单位)...
  7. vue router 的两种路由模式hash与history的区别
  8. 创建您自己的.NET DynamicObject 为什么、何时和如何
  9. 【换句话说】【等价描述】—— 定义及概念的不同描述
  10. cJSON解析和打包
  11. JAVA if语句快捷键_java编程基础 第一、第二章
  12. 计算机光驱启动设置,bios设置光驱启动图文教程
  13. android ProgressBar自定义半圆形进度条
  14. Intent简单介绍
  15. 上海启用大数据捉拿套牌车 被套牌应立即报案
  16. setPositiveButton和setNegativeButton
  17. matlab求解微分方程解析解
  18. FB、WhatsApp群发消息在2022年到底有多热门?
  19. Antd pro中ProFormSelect使用initialValues
  20. 怎样通过任务管理器优化电脑速度

热门文章

  1. python3 struct.pack方法报错argument for 's' must be a bytes object
  2. JWT.NET的使用
  3. Effective前端5:减少前端代码耦合
  4. 30岁菜鸟涛学习VB.net 第八天
  5. Firefox下强制页面缓存失效的设置方法
  6. Silverlight教程第二部分:使用布局管理 (木野狐译)
  7. java中Collections常用方法总结(包括sort,copy,reverse等)
  8. FAIL : SSHException: Incompatible ssh peer (no acceptable kex algorithm)
  9. python 装饰器 继承_Python设计模式之装饰器模式
  10. mysql添加分区健_MySQL添加分区添加索引