Python程序员联盟程序员程序员首页投稿

【Kaggle入门】|泰坦尼克问题分析

2017-10-15  本文已影响312人  菜鸟学python

原创 2017-09-25 小郑同学
阅读本文大概需要2分钟
本篇作者:小郑同学

当你学习了一定时间的机器学习后,你可能会想找个地方“大显身手”,体会一下实战的感觉,那么kaggle绝对是不二之选. 上面有很多的竞赛题目,也有适合初学者的入门题目: 如“泰坦尼克”,“手写数字识别”,“房价预测”等,非常有趣好玩. 今天就和大家一起学习如何完成“泰坦尼克”入门题目~~

1.获取数据

数据源自大名鼎鼎的Kaggle官网上,大家很容易就可以下载(不过要提前注册一下),网址为https://www.kaggle.com/c/titanic,进去后是这样的:


点击Data下载数据集

2.数据预处理

1).获取数据后,接下来就要进行一个预处理,我们先导入数据并查看:

可以清楚的看到,一共有12个字段(特征),除了Survived(表示是否获救)外,其他是乘客的信息:

2).看一下数据导入部分的源码

3.特征选择

4.特征工程

这一步大家可以理解为对选择的特征做进一步的处理变换。刚刚的Age已经处理好了,我们再来看下其他两个特征:

1).性别

data['Sex_type']=data.Sex.map({'male':0,'female':1})
print(data.Sex.value_counts())

male 577
female 314
Name: Sex, dtype: int64

这里我们使用kaggle里常用的方法one-hot进行编码,之所以用这个方法,一个是更加贴近计算机计算方式(因为转为0和1),一个是算法识别不了字符串

2).舱位

print(data.Pclass.value_counts())

3 491
1 216
2 184
Name: Pclass, dtype: int64

这个特征已经是分为1,2,3的数值类型了,也没有缺失值,我们就不用去修改了,直接拿来用.

5.模型的选择和评估

在这里,我选择决策树算法来训练并预测. 因为决策树算法我觉得还是容易理解的,就是一系列的条件选择,很像if else语句,只不过决策树是运用了信息论的知识,来决定先分裂哪个节点(即特征),比如说可能是这样决策的:


结合该题目,决策树模型大概就是这样,都是按照节点(特征)来一个个判断的,实现起来也简单,用sklearn里面的决策树算法就好了

0.820444614686

到此,我们已经实现了一个算法,算是初步解决了一个kaggle入门问题,想要追求更高得分的小伙伴,我建议是从特征选择入手,尝试不同的组合往往也会有不同的效果

结论:小郑同学

在我看来,解决机器学习问题的方法是灵活的,一个问题的方法和思路不止一种 ,其实没有所谓的机器学习算法优劣,也没有绝对高性能的机器学习算法.只有更合适的机器学习算法。当然,这篇文章里面的解法还是有缺陷,并不能十分正确的预测所有乘客的获救情况,但基本覆盖了解决问题的流程,希望能给大家或多或少带来帮助,也希望大家不吝赐教!

另外:需要源码的同学,请留言

上一篇 下一篇

猜你喜欢

热点阅读