首页
学习
活动
专区
工具
TVP
发布

机器学习Kaggle入门,经典又兼具备趣味性的泰坦尼克号问题

大家都熟悉的『Jack and Rose』的故事,豪华游艇倒了,大家都惊恐逃生,可是救生艇的数量有限,无法人人都有,副船长发话了『lady and kid first!』,所以是否获救其实并非随机,而是基于一些背景有rank先后的。

训练和测试数据是一些乘客的个人信息以及存活状况,要尝试根据它生成合适的模型并预测其他人的存活状况。

本文介绍特征工程的一些思考方法,说明特征工程对于预测结果的提升的重要性。

1.导入一些必要的库

2.读取训练/测试数据

3.读取数据对数据有一定认识

4.数据分析

数据共891行,12列数据,有用特征11列,还有1个标签列,其中PassengerId只是数据标号,"Survivrd"特征是标签

Survived:是否生存 1表示存活,0表示未生存

1.PassengerId:乘客编号,无用数据

2.Pclass:乘客等级 1/2/3等舱

3.Name:乘客姓名

4.Sex:性别 male:男性,female:女性

5.Age:年龄

6.SibSp:堂兄/妹个数

7.Parch:父母与小孩个数

8.Ticket:船票信息

9.Fare:票价

10.Cabin:客舱

11.Embarked:登船港口

数值型特征:1.Pclass 2.Age 3.SibSp 4.Parch 5.Fare

文本型特征:1.Name 2.Sex 3.Ticket 4.Cabin 5.Embarked

1.训练数据: 

数据共891行

缺省值:1.Age(差15%左右) 2.Cabin(差70%左右) 3.Embarked(差两个)

2.测试数据:

数据共418行,没有标签Survived,特征和训练数据一样都是10个

缺省值:1.Age(差20%) 2.Cabin(差60%) 3.Fare(差一个)

5.特征处理

Age

1.存在缺省值,需要填充

2.数据种类多,需要区间划分分类

1)观察数据

2)分析数据,采取策略

观察数据,可以看出age主要集中在中间段。

1.缺省值采用随机数填充;

2.划分14|20|30|40|50|60。

3)验证数据划分是否正确

Cabin 客舱信息

客舱信息丢失很多,采用均值填充都不是好办法,所以将"客舱信息"丢失与否进行分类,新增加一项特征“Has_Cabin”。

Fare 票价

票价训练集仅缺少一个,采用均值填充

1)数据填充

2)数据观察

数据都主要集中在左侧,需要对数据进行归一化处理,利用log。

3)归一化处理

4)再分类

不同区间票价进行分类

5)验证观察数据

当票价偏低时,生存几率小;

当票价为中间时,生存几率提高;

当票价大时,生存几率更大。

Embarked登船港口

训练数据有两个缺失值,需要填补

1)观察数据

Embarked 中,“S”居多,采用多数进行填充;

其次,需要将其数值化,便于计算。

2)填充并数值化处理

3)数据查看

Name名字

1)观察数据

2)没有规律,挖掘规律

观察到名字中间的称呼是不一样的,有Miss,Mr等,因此提炼出新的特征“Title”。

3)抽取数据

4)观察数据

5)减少特征所对应分类

对出现比较多的前缀进行映射,"Mr":1,"Miss":2,"Mrs":3,"Master":4,"Dr":5 ,"Rev":6,其他为0。

Sex性别

需要数值化处理

1)观察数据

2)数值化处理

3)观察数据

Parch 父母和小孩个数

SibSp 堂兄弟/妹个数

通过上述两个特征发现,存在一个父母小孩和堂兄堂妹都没有的乘客,因此可以判断乘客是否是孤独一人,创建一个新的特征“Alone”

Parch ,SibSp ->Alone

1)创建新特征

根据Parch,SibSp都为0来确定是否为Alone

2)观察数据

看下目前所有特征情况

5.特征选择与预测

选择不同数量的特征,对于结果的影响

["Pclass",'Title','Sex','Age','Parch','Fare','Embarked','Has_Cabin','SibSp','Alone']

1)创建特征列表

2)观察特征的相关性

3)创建训练算法函数

4)实验增加特征

看出增加特征,训练准确度提升了。

5)函数完成特征增加

6)图示

总结:

通过对特征的分析整理,采用同样的算法,对特征的进行选择,准确度不断提升。

这就是特征工程的魅力,也是机器学习的关键。以后完成的有趣项目再给大家分享。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180521G00UOU00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券