预测模型的分解过程
我总是集中于投入有质量的时间在建模的初始阶段,比如,假设生成、头脑风暴、讨论或理解可能的结果范围。所有这些活动都有助于我解决问题,并最终让我设计出更强大的商业解决方案。为什么你要在前面花费这段时间,这有充分的理由:
你有足够的时间投入并且你是无经验的(这是有影响的)
你不带有其它数据观点或想法的偏见(我总是建议,在深入研究数据之前做假设生成)
在后面的阶段,你会急于完成该项目而没有能力投入有质量的时间了。
这个阶段需要投入高质量时间,因此我没有提及时间表,不过我建议你把它作为标准的做法。这有助于你建立建立更好地预测模型,在后面的阶段的只需较少的迭代工作。让我们来看看建立第一个模型的剩余阶段的时间表:
数据描述性分析——50%的时间
数据预处理(缺失值和异常值修复)——40%的时间
数据建模——4%的时间
性能预测——6%的时间
让我们一步一步完成每个过程(每一步投入预测的时间):
阶段1:描述性分析/数据探索
在我刚开始成为数据科学家的时候,数据探索占据了我大量的时间。不过,随着时间的推移,我已经把大量的数据 *** 作自动化了。由于数据准备占据建立第一个模型工作量的50%,自动化的好处是显而易见的。
这是我们的第一个基准模型,我们去掉任何特征设计。因此,描述分析所需的时间仅限于了解缺失值和直接可见的大的特征。在我的方法体系中,你将需要2分钟来完成这一步(假设,100000个观测数据集)。
我的第一个模型执行的 *** 作:
确定ID,输入特征和目标特征
确定分类和数值特征
识别缺失值所在列
阶段2:数据预处理(缺失值处理)
有许多方法可以解决这个问题。对于我们的第一个模型,我们将专注于智能和快速技术来建立第一个有效模型。
为缺失值创建假标志:有用,有时缺失值本身就携带了大量的信息。
用均值、中位数或其它简单方法填补缺失值:均值和中位数填补都表现良好,大多数人喜欢用均值填补但是在有偏分布的情况下我建议使用中位数。其它智能的方法与均值和中位数填补类似,使用其它相关特征填补或建立模型。比如,在Titanic生存挑战中,你可以使用乘客名字的称呼,比如:“Mr”, “Miss”,”Mrs”,”Master”,来填补年龄的缺失值,这对模型性能有很好的影响。
填补缺失的分类变量:创建一个新的等级来填补分类变量,让所有的缺失值编码为一个单一值比如,“New_Cat”,或者,你可以看看频率组合,使用高频率的分类变量来填补缺失值。
由于数据处理方法如此简单,你可以只需要3到4分钟来处理数据。
阶段3:数据建模
根据不同的业务问题,我推荐使用GBM或RandomForest技术的任意一种。这两个技术可以极其有效地创建基准解决方案。我已经看到数据科学家通常把这两个方法作为他们的第一个模型同时也作为最后一个模型。这最多用去4到5分钟。
阶段4:性能预测
有各种各样的方法可以验证你的模型性能,我建议你将训练数据集划分为训练集和验证集(理想的比例是70:30)并且在70%的训练数据集上建模。现在,使用30%的验证数据集进行交叉验证并使用评价指标进行性能评估。最后需要1到2分钟执行和记录结果。
本文的目的不是赢得比赛,而是建立我们自己的基准。让我们用python代码来执行上面的步骤,建立你的第一个有较高影响的模型。
让我们开始付诸行动
首先我假设你已经做了所有的假设生成并且你擅长使用python的基本数据科学 *** 作。我用一个数据科学挑战的例子来说明。让我们看一下结构:
步骤1:导入所需的库,读取测试和训练数据集。
#导入pandas、numpy包,导入LabelEncoder、random、RandomForestClassifier、GradientBoostingClassifier函数
import pandas as pd
import numpy as np
fromsklearnpreprocessing import LabelEncoder
import random
fromsklearnensemble import RandomForestClassifier
from sklearnensembleimport GradientBoostingClassifier
#读取训练、测试数据集
train=pdread_csv('C:/Users/AnalyticsVidhya/Desktop/challenge/Traincsv')
test=pdread_csv('C:/Users/AnalyticsVidhya/Desktop/challenge/Testcsv')
#创建训练、测试数据集标志
train='Train'
test='Test'
fullData =pdconcat(,axis=0) #联合训练、测试数据集
步骤2:该框架的第二步并不需要用到python,继续下一步。
步骤3:查看数据集的列名或概要
fullDatacolumns # 显示所有的列名称
fullDatahead(10) #显示数据框的前10条记录
fullDatadescribe() #你可以使用describe()函数查看数值域的概要
步骤4:确定a)ID变量 b)目标变量 c)分类变量 d)数值变量 e)其他变量。
ID_col =
target_col =
cat_cols =
num_cols= list(set(list(fullDatacolumns))-set(cat_cols)-set(ID_col)-set(target_col)-set(data_col))
other_col= #为训练、测试数据集设置标识符
步骤5:识别缺失值变量并创建标志
fullDataisnull()any()#返回True或False,True意味着有缺失值而False相反
num_cat_cols = num_cols+cat_cols # 组合数值变量和分类变量
#为有缺失值的变量创建一个新的变量
# 对缺失值标志为1,否则为0
for var in num_cat_cols:
if fullDataisnull()any()=True:
fullData=fullDataisnull()1
步骤6:填补缺失值
#用均值填补数值缺失值
fullData = fullDatafillna(fullDatamean(),inplace=True)
#用-9999填补分类变量缺失值
fullData = fullDatafillna(value = -9999)
步骤7:创建分类变量的标签编码器,将数据集分割成训练和测试集,进一步,将训练数据集分割成训练集和测试集。
#创建分类特征的标签编码器
for var in cat_cols:
number = LabelEncoder()
fullData = numberfit_transform(fullDataastype('str'))
#目标变量也是分类变量,所以也用标签编码器转换
fullData = numberfit_transform(fullDataastype('str'))
train=fullData='Train']
test=fullData='Test']
train = nprandomuniform(0, 1, len(train)) <= 75
Train, Validate = train=True], train=False]
步骤8:将填补和虚假(缺失值标志)变量传递到模型中,我使用随机森林来预测类。
features=list(set(list(fullDatacolumns))-set(ID_col)-set(target_col)-set(other_col))
x_train = Trainvalues
y_train = Trainvalues
x_validate = Validatevalues
y_validate = Validatevalues
x_test=testvalues
randomseed(100)
rf = RandomForestClassifier(n_estimators=1000)
rffit(x_train, y_train)
步骤9:检查性能做出预测
status = rfpredict_proba(x_validate)
fpr, tpr, _ = roc_curve(y_validate, status)
roc_auc = auc(fpr, tpr)
print roc_auc
final_status = rfpredict_proba(x_test)
test=final_status
testto_csv('C:/Users/Analytics Vidhya/Desktop/model_outputcsv',columns=)
现在可以提交了!
最近,我从孙子(指《孙子兵法》——译者注)那里学到了一些策略:速度和准备
“兵之情主速,乘人之不及,由不虞之道,攻其所不戒也。”(《孙子兵法•九地篇》)无备为战之大患,有备无患,其乃至德也。(哈哈,译者自己写了这句,想必大家能明白。)
这与数据科学博客有什么关系呢?这是你赢得竞争和编程马拉松的关键。如果你比竞争对手准备得更充分,你学习、迭代执行的速度越快,那么你就取得更好的名次,带来更好的结果。
由于近几年来,Python用户数量上涨及其本身的简洁性,使得这个工具包对数据科学世界的Python专家们变得有意义。本文将帮助你更快更好地建立第一个预测模型。绝大多数优秀的数据科学家和kagglers建立自己的第一个有效模型并快速提交。这不仅仅有助于他们领先于排行榜,而且提供了问题的基准解决方案。
预测模型的分解过程
我总是集中于投入有质量的时间在建模的初始阶段,比如,假设生成、头脑风暴、讨论或理解可能的结果范围。所有这些活动都有助于我解决问题,并最终让我设计出更强大的商业解决方案。为什么你要在前面花费这段时间,这有充分的理由:
你有足够的时间投入并且你是无经验的(这是有影响的)
你不带有其它数据观点或想法的偏见(我总是建议,在深入研究数据之前做假设生成)
在后面的阶段,你会急于完成该项目而没有能力投入有质量的时间了。
这个阶段需要投入高质量时间,因此我没有提及时间表,不过我建议你把它作为标准的做法。这有助于你建立建立更好地预测模型,在后面的阶段的只需较少的迭代工作。让我们来看看建立第一个模型的剩余阶段的时间表:
数据描述性分析——50%的时间
数据预处理(缺失值和异常值修复)——40%的时间
数据建模——4%的时间
性能预测——6%的时间
让我们一步一步完成每个过程(每一步投入预测的时间):
阶段1:描述性分析/数据探索
在我刚开始成为数据科学家的时候,数据探索占据了我大量的时间。不过,随着时间的推移,我已经把大量的数据 *** 作自动化了。由于数据准备占据建立第一个模型工作量的50%,自动化的好处是显而易见的。
这是我们的第一个基准模型,我们去掉任何特征设计。因此,描述分析所需的时间仅限于了解缺失值和直接可见的大的特征。在我的方法体系中,你将需要2分钟来完成这一步(假设,100000个观测数据集)。
我的第一个模型执行的 *** 作:
确定ID,输入特征和目标特征
确定分类和数值特征
识别缺失值所在列
阶段2:数据预处理(缺失值处理)
有许多方法可以解决这个问题。对于我们的第一个模型,我们将专注于智能和快速技术来建立第一个有效模型。
为缺失值创建假标志:有用,有时缺失值本身就携带了大量的信息。
用均值、中位数或其它简单方法填补缺失值:均值和中位数填补都表现良好,大多数人喜欢用均值填补但是在有偏分布的情况下我建议使用中位数。其它智能的方法与均值和中位数填补类似,使用其它相关特征填补或建立模型。比如,在Titanic生存挑战中,你可以使用乘客名字的称呼,比如:“Mr”, “Miss”,”Mrs”,”Master”,来填补年龄的缺失值,这对模型性能有很好的影响。
填补缺失的分类变量:创建一个新的等级来填补分类变量,让所有的缺失值编码为一个单一值比如,“New_Cat”,或者,你可以看看频率组合,使用高频率的分类变量来填补缺失值。
由于数据处理方法如此简单,你可以只需要3到4分钟来处理数据。
阶段3:数据建模
根据不同的业务问题,我推荐使用GBM或RandomForest技术的任意一种。这两个技术可以极其有效地创建基准解决方案。我已经看到数据科学家通常把这两个方法作为他们的第一个模型同时也作为最后一个模型。这最多用去4到5分钟。
1 90 The Godfather (1972) 117,111 教父
2 89 The Shawshank Redemption (1994) 143,145 肖申克的救赎/刺激1995/月黑风高
3 89 The Lord of the Rings: The Return of the King (2003) 96,833 指环王III/魔戒III:王者归来
4 88 The Godfather: Part II (1974) 68,829教父II
5 88 Shichinin no samurai (1954) 30,139 七武士
6 87 Casablanca (1942) 64,227 卡萨布兰卡/北非谍影
7 87 Schindler's List (1993) 94,598 辛德勒名单/舒特拉的名单
8 87 The Lord of the Rings: The Fellowship of the Ring (2001) 152,097 指环王I/魔戒I:魔戒现身
9 87 Star Wars (1977) 130,346 星球大战
10 87 Citizen Kane (1941) 59,486 公民凯恩/大国民
11 87 The Lord of the Rings: The Two Towers (2002) 109,535 指环王II/魔戒II:双城奇谋/双塔
12 87 One Flew Over the Cuckoo's Nest (1975) 67,852 飞越疯人院/飞越杜鹃窝
13 87 Pulp Fiction (1994) 126,620 低俗小说/黑色追缉令/危险人物
14 86 Star Wars: Episode V - The Empire Strikes Back (1980) 100,480 帝国反击战/帝国大反击
15 86 Rear Window (1954) 40,258 后窗
16 86 Dr Strangelove or: How I Learned to Stop Worrying and Love the Bomb (1964) 61,821 奇爱博士/密码114
17 86 The Usual Suspects (1995) 100,503 嫌疑惯犯/非常嫌疑犯/普通嫌疑犯/刺激惊爆点
18 86 Raiders of the Lost Ark (1981) 90,975 夺宝奇兵/法柜奇兵
19 86 Buono, il brutto, il cattivo, Il (1966) 28,758 独行侠决战地狱门/好人、坏人和小丑/黄昏三镖客/地狱大决斗
20 86 Cidade de Deus (2002) 22,998 无主之城
21 86 12 Angry Men (1957) 28,571 十二怒汉
22 86 Memento (2000) 87,022 记忆拼图/失忆/纪念品
23 85 Psycho (1960) 51,959 惊魂记/精神病患者/触目惊心
24 85 North by Northwest (1959) 35,239 西北偏北/谍影疑云/谍影风云/夺魄惊魂
25 85 Lawrence of Arabia (1962) 30,812 阿拉伯的劳伦斯/沙漠枭雄
26 85 Fabuleux destin d'Amélie Poulain, Le (2001) 56,480 天使爱美丽/艾蜜莉的异想世界
27 85 C'era una volta il West (1968) 15,910 狂沙十万里/西部往事/万里狂沙万里愁
28 85 The Silence of the Lambs (1991) 89,241 沉默的羔羊
29 85 Goodfellas (1990) 64,892 盗亦有道/好家伙
30 85 It's a Wonderful Life (1946) 40,882 风云人物/奇妙的生活/莫负少年头
31 85 Sunset Blvd (1950) 15,328 日落大道
32 85 American Beauty (1999) 106,426 美国美人/美国心/玫瑰情/美丽有罪
33 84 Eternal Sunshine of the Spotless Mind (2004) 40,385暖暖内含光/无痛失恋/美丽心灵的永恒阳光
34 84 The Matrix (1999) 137,983黑客帝国/二十二世纪杀人网络/骇客任务
35 84 Apocalypse Now (1979) 62,012 现代启示录
36 84 Vertigo (1958) 33,550 迷魂记/眩晕
37 84 Fight Club (1999) 106,949 搏击俱乐部/搏击会/斗阵俱乐部
38 84 Paths of Glory (1957) 13,690 光荣之路/光辉的历程/突击
39 84 The Third Man (1949) 17,662 第三者/黑狱亡魂
40 84 To Kill a Mockingbird (1962) 29,935 杀死一只知更鸟/梅岗城的故事/怪屋疑云
41 84 Sen to Chihiro no kamikakushi (2001) 22,278 千与千寻/神隐少女
42 84 Singin' in the Rain (1952) 19,650 雨中曲/万花嬉春
43 84 Taxi Driver (1976) 46,492 出租车司机/的士司机/计程车司机
44 84 Double Indemnity (1944) 11,068 双重保险/双重赔偿/双重生活
45 83 The Pianist (2002) 29,018 钢琴师/钢琴家/战地琴人
46 83 Boot, Das (1981) 27,769 从海底出击/特种任务/潜航大风暴
47 83 M (1931) 11,483 M/M就是凶手/可诅咒的人
48 83 Rash鬽on (1950) 10,984 罗生门
49 83 Se7en (1995) 85,090 七宗罪/火线追缉令
50 83 All About Eve (1950) 12,533 慧星美人
51 83 The Maltese Falcon (1941) 18,695马耳他雄鹰/枭巢喋血记/群雄夺宝鹰
52 83 The Bridge on the River Kwai (1957) 21,435 桂河大桥
53 83 Some Like It Hot (1959) 25,303 骄阳似火
54 83 Chinatown (1974) 25,508 唐人街
55 83 Requiem for a Dream (2000) 44,676 梦之安魂曲/迷上瘾/梦的挽歌
56 83 Monty Python and the Holy Grail (1975) 58,784 巨蟒和圣杯/圣杯传奇/蒙迪佩登与圣杯
57 83 LA Confidential (1997) 68,107 幕后嫌疑犯/洛城机密/铁面特警队
58 83 Saving Private Ryan (1998) 96,395 拯救大兵雷恩/雷霆救兵
59 83 Léon (1994) 50,134 这个杀手不太冷/杀手莱昂/终极追杀令
60 83 Alien (1979) 60,808 异形/异形杀手
61 83 American History X (1998) 56,356 野兽良民/美国X历史
62 83 Modern Times (1936) 9,771 摩登时代
63 82 Kill Bill: Vol 1 (2003) 61,067 杀死比尔I
64 82 Mr Smith Goes to Washington (1939) 11,079 史密斯游美京/史密斯先生到华盛顿/华府风云/民主万岁
65 82 Raging Bull (1980) 26,090 愤怒的公牛/蛮牛/狂牛
66 82 The Manchurian Candidate (1962) 13,580 满洲候选人/谍影迷魂
67 82 The Wizard of Oz (1939) 36,900 绿野仙踪/梦游仙宫
68 82 The Treasure of the Sierra Madre (1948) 9,997 碧血金沙/宝石岭/浴血金沙
69 82 The Sting (1973) 22,748 骗中骗/老千记状元才/刺激
70 82 On the Waterfront (1954) 12,126 码头风云/岸上风云/在江边
71 82 Vita è bella, La (1997) 36,374 美丽人生/一个快乐的传说
72 82 Ran (1985) 11,296 乱
73 82 Touch of Evil (1958) 11,257 历劫佳人/人海奇花
74 82 Amadeus (1984) 35,458 莫扎特传/阿玛迪斯
75 82 A Clockwork Orange (1971) 63,321 发条橙
76 82 Reservoir Dogs (1992) 66,763 落水狗/水库狗/霸道横行
77 82 The Great Escape (1963) 19,127龙虎榜/大逃亡/第三集中营
78 82 2001: A Space Odyssey (1968) 63,653 二OO一漫游太空
79 82 The Apartment (1960) 10,701 公寓春光/桃色公寓
80 82 City Lights (1931) 7,404 城市之光
81 82 Metropolis (1927) 11,404 大都市
82 82 The Shining (1980) 48,439 闪灵/鬼店
83 82 Jaws (1975) 45,058 大白鲨
84 82 Finding Nemo (2003) 38,680 海底总动员
85 82 Aliens (1986) 62,308 异形II(第一集是单数,第二集是复数)
86 82 High Noon (1952) 11,934 正午/龙城歼霸战
87 82 Annie Hall (1977) 20,442 安妮.霍尔
88 82 Sjunde inseglet, Det (1957) 9,072 第七封印/第七印章
89 82 Kill Bill: Vol 2 (2004) 39,752 杀死比尔II
90 82 Braveheart (1995) 88,624 勇敢的心/惊世未了缘/梅尔吉勃逊之英雄本色
91 82 Strangers on a Train (1951) 10,119 列车上的陌生人/火车怪客
92 82 The General (1927) 6,365 将军号
93 82 The Great Dictator (1940) 9,847 大独裁者
94 81 Nuovo cinema Paradiso (1989) 13,328 天堂**院/星光伴我心/新天堂乐园
95 81 Wo hu cang long (2000) 50,333 卧虎藏龙
96 81 Donnie Darko (2001) 47,503 死亡幻觉/唐尼·达可
97 81 Fargo (1996) 64,069 冰风暴/雪花高离奇谋杀案
98 81 Blade Runner (1982) 72,129 银翼杀手/叛狱追杀令
99 81 Mononoke-hime (1997) 18,227 魔法公主/幽灵公主
100 81 The Best Years of Our Lives (1946) 5,861 黄金时代/我们生活中最美好的年代
1、对数据进行排序dfsort_values()
#读取数据
titanic_survival=pdread_csv(r"C:Userspythonwandata_minepython_pandas itanic_traincsv")
#用sort_values()函数对指定列排序,默认升序排序,inplace=True表示在原来的df上排序titanic_survivalsort_values(("Age"),inplace=Tru
2、缺失值判断及统计pandasisnull()、pandasisnull
空值统计方法一:dfisnull()sum():
#当不指定具体列时,统计整个df的缺失值个数
titanic_survival['Age']isnull()sum()
通过len()函数统计缺失值
3、缺失值处理
处理缺失值可以分为两类:删除缺失值和缺失值插补。而缺失值插补又分为以下几种:
均值/中位数/众数插补
使用固定值(将缺失值的属性用一个常量代替)
最近邻插补(在记录中找到与缺失值样本最接近的样本的该属性插补)
回归方法(对带有缺失值的变量,根据已有数据和与其有关的其他变量建立拟合模型来预测缺失值)
插值法(利用已知点建立合适的插值函数f(x),未知值由对应点xi求出来近似代替)
下面,我们主要讨论删除缺失值,学习一些pandas缺失值删除的 *** 作。
1)dfdropna(),舍弃含有任意缺失值的行
#等价于titanic_survivaldropna(axis=0) axis=0表示删除行,axis=1表示删除列
dropall=titanic_survivaldropna()
删除含任意空值的行
2)dfdropna()函数删除某个列中含有空值的行
现在这个数据中age、cabin、embarked都有缺失值,如果我们直接使用dfdropna()会删除掉这三列中都有空值的所有行,但是我们希望只删除age列中有空值的数据,那该如何处理呢?
直接使用dfdropna(subset=['column_list'])
drop_age_null=titanic_survivaldropna(subset=["Age"])
删除指定列中含有缺失值的行
pandas自定义函数
以上就是关于如何用Python在10分钟内建立一个预测模型全部的内容,包括:如何用Python在10分钟内建立一个预测模型、怎样用python数据建模、经典的电影有哪些比如:泰坦尼克号,珍珠港,阿甘...等等等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)