[泰坦尼克之灾](https://www.kaggle.com/c/titanic):求生问题预测,是一个二分类问题,判断每名乘客的存活情况,读了寒小阳大牛的博客,现做以下整理。阳哥只介绍了逻辑回归算法,我也只根据逻辑回归介绍相关知识和kaggle比赛注意的地方。其中几条注意直接摘抄来:『对数据的认识太重要了!』『数据中的特殊点/离群点的分析和处理太重要了!』『特征工程(feature engineering)太重要了!在很多Kaggle的场景下,甚至比model本身还要重要』『要做模型融合(model ensemble)啊啊啊!』首先认识数据,我们先用pandas的read_csv来读取数据
import pandas as pd #数据分析
import numpy as np #科学计算
from pandas import Series,DataFrame
data_train = pd.read_csv("/home/liu/tan/titanic_train.csv")
data_train 

得到结果如下:

这是典型DataFream模式,一共12列,其中Surevied 段表示乘客是否获救,其余是乘客个人信息:
PassengerId => 乘客ID
Pclass => 乘客等级(1/2/3等舱位)
Name => 乘客姓名
Sex => 性别
Age => 年龄
SibSp => 堂兄弟/妹个数
Parch => 父母与小孩个数
Ticket => 船票信息
Fare => 票价
Cabin => 客舱
Embarked => 登船港口

我们可以用data_rain.info()告诉我们一些信息。

上面的信息说明告诉我们。一共有891名乘客,但是有的属性不全,比如说
Age(年龄) 只有714名乘客有记录
Cabin(客舱)只有204名乘客是已知的
似乎信息略少啊,想再瞄一眼具体数据数值情况呢?恩,我们用下列的方法,得到数值型数据的一些分布(因为有些属性,比如姓名,是文本型;而另外一些属性,比如登船港口,是类目型。这些我们用下面的函数是看不到的):

我们从上面看到更进一步的什么信息呢?
mean字段告诉我们,大概0.383838的人最后获救了,2/3等舱的人数比1等舱要多,平均乘客年龄大概是29.7岁(计算这个时候会略掉无记录的)等等…
6 数据初步分析
对数据分析很重要,重要!重要!
6.1 乘客各属性分布

import matplotlib.pyplot as plt
fig = plt.figure()
fig.set(alpha=0.2)  # 设定图表颜色alpha参数
plt.subplot2grid((2,3),(0,0))             # 在一张大图里分列几个小图
data_train.Survived.value_counts().plot(kind='bar')# 柱状图
plt.title(u"获救情况 (1为获救)") # 标题
plt.ylabel(u"人数")
plt.subplot2grid((2,3),(0,1))
data_train.Pclass.value_counts().plot(kind="bar")
plt.ylabel(u"人数")
plt.title(u"乘客等级分布")
plt.subplot2grid((2,3),(0,2))
plt.scatter(data_train.Survived, data_train.Age)
plt.ylabel(u"年龄")                         # 设定纵坐标名称
plt.grid(b=True, which='major', axis='y')
plt.title(u"按年龄看获救分布 (1为获救)")plt.subplot2grid((2,3),(1,0), colspan=2)
data_train.Age[data_train.Pclass == 1].plot(kind='kde')
data_train.Age[data_train.Pclass == 2].plot(kind='kde')
data_train.Age[data_train.Pclass == 3].plot(kind='kde')
plt.xlabel(u"年龄")# plots an axis lable
plt.ylabel(u"密度")
plt.title(u"各等级的乘客年龄分布")
plt.legend((u'头等舱', u'2等舱',u'3等舱'),loc='best') # sets our legend for our graph.
plt.subplot2grid((2,3),(1,2))
data_train.Embarked.value_counts().plot(kind='bar')
plt.title(u"各登船口岸上船人数")
plt.ylabel(u"人数")
plt.show()


阳哥从数据中可以得到以下信息:
我们在图上可以看出来,被救的人300多点,不到半数;3等舱乘客灰常多;遇难和获救的人年龄似乎跨度都很广;3个不同的舱年龄总体趋势似乎也一致,2/3等舱乘客20岁多点的人最多,1等舱40岁左右的最多(→_→似乎符合财富和年龄的分配哈,咳咳,别理我,我瞎扯的);登船港口人数按照S、C、Q递减,而且S远多于另外俩港口。
6.2 属性与获救结果的关联统计

#看看各乘客等级的获救情况
fig = plt.figure()
fig.set(alpha=0.2)  # 设定图表颜色alpha参数
Survived_0 = data_train.Pclass[data_train.Survived == 0].value_counts()
Survived_1 = data_train.Pclass[data_train.Survived == 1].value_counts()
df=pd.DataFrame({u'获救':Survived_1, u'未获救':Survived_0})
df.plot(kind='bar', stacked=True)
plt.title(u"各乘客等级的获救情况")
plt.xlabel(u"乘客等级")
plt.ylabel(u"人数")
plt.show()


可以看到,第一级别的舱位获救情况更好一点。

#看看各性别的获救情况
fig = plt.figure()
fig.set(alpha=0.2)  # 设定图表颜色alpha参数Survived_m = data_train.Survived[data_train.Sex == 'male'].value_counts()
Survived_f = data_train.Survived[data_train.Sex == 'female'].value_counts()
df=pd.DataFrame({u'男性':Survived_m, u'女性':Survived_f})
df.plot(kind='bar', stacked=True)
plt.title(u"按性别看获救情况")
plt.xlabel(u"性别")
plt.ylabel(u"人数")
plt.show()

 #然后我们再来看看各种舱级别情况下各性别的获救情况
fig=plt.figure()
fig.set(alpha=0.65) # 设置图像透明度,无所谓
plt.title(u"根据舱等级和性别的获救情况")ax1=fig.add_subplot(141)
data_train.Survived[data_train.Sex == 'female'][data_train.Pclass != 3].value_counts().plot(kind='bar', label="female highclass", color='#FA2479')
ax1.set_xticklabels([u"获救", u"未获救"], rotation=0)
ax1.legend([u"女性/高级舱"], loc='best')ax2=fig.add_subplot(142, sharey=ax1)
data_train.Survived[data_train.Sex == 'female'][data_train.Pclass == 3].value_counts().plot(kind='bar', label='female, low class', color='pink')
ax2.set_xticklabels([u"未获救", u"获救"], rotation=0)
plt.legend([u"女性/低级舱"], loc='best')ax3=fig.add_subplot(143, sharey=ax1)
data_train.Survived[data_train.Sex == 'male'][data_train.Pclass != 3].value_counts().plot(kind='bar', label='male, high class',color='lightblue')
ax3.set_xticklabels([u"未获救", u"获救"], rotation=0)
plt.legend([u"男性/高级舱"], loc='best')ax4=fig.add_subplot(144, sharey=ax1)
data_train.Survived[data_train.Sex == 'male'][data_train.Pclass == 3].value_counts().plot(kind='bar', label='male low class', color='steelblue')
ax4.set_xticklabels([u"未获救", u"获救"], rotation=0)
plt.legend([u"男性/低级舱"], loc='best')
plt.show()

kaggle入门泰坦尼克之灾内容总结相关推荐

  1. kaggle入门-泰坦尼克之灾

    kaggle入门-泰坦尼克之灾 引言 数据认识 总结 特征处理 建模预测 logistic分类模型 随机森林 SVM xgboost 模型验证 交叉验证 学习曲线 高偏差: 高方差 模型融合 总结 后 ...

  2. Kaggle滑水 - 泰坦尼克之灾(决策树)

    本文以Kaggle新手习题--Titanic: Machine Learning from Disaster为场景开展实验,以此熟悉Kaggle平台. 本文的源码托管于我的Github:Practic ...

  3. kaggle 入门 泰坦尼克 处理过程

    一.数据预处理 pandas库的内容(数据分析处理): read_csv :读取文件,变为矩阵 head(n) : 输出前n行内容,默认5 PassengerId Survived Pclass \ ...

  4. 小白的机器学习之路(1)---Kaggle竞赛:泰坦尼克之灾(Titanic Machine Learning from Disaster)

    我是目录 前言 数据导入 可视化分析 Pclass Sex Age SibSp Parch Fare Cabin Embarked 特征提取 Title Family Size Companion A ...

  5. Kaggle竞赛——Titanic泰坦尼克之灾(0.76315==>0.79186)

    Kaggle竞赛网址:https://www.kaggle.com/c/titanic 上一章:Kaggle竞赛--Titanic泰坦尼克之灾(保姆级基础版) 本次Kaggle泰坦尼克之灾分析过程大致 ...

  6. Kaggle竞赛——Titanic泰坦尼克之灾(保姆级基础版)

    Kaggle竞赛网址:https://www.kaggle.com/c/titanic 本次Kaggle泰坦尼克之灾分析过程大致分为: 第1步:了解数据 第2步:分析数据之间的关系 第3步:缺失项数据 ...

  7. kaggle实战—泰坦尼克(五、模型搭建-模型评估)

    kaggle实战-泰坦尼克(一.数据分析) kaggle实战-泰坦尼克(二.数据清洗及特征处理) kaggle实战-泰坦尼克(三.数据重构) kaggle实战-泰坦尼克(四.数据可视化) kaggle ...

  8. kaggle实战—泰坦尼克(三、数据重构)

    kaggle实战-泰坦尼克(一.数据分析) kaggle实战-泰坦尼克(二.数据清洗及特征处理) kaggle实战-泰坦尼克(三.数据重构) kaggle实战-泰坦尼克(四.数据可视化) kaggle ...

  9. kaggle实战—泰坦尼克(二、数据清洗及特征处理)

    kaggle实战-泰坦尼克(一.数据分析) kaggle实战-泰坦尼克(二.数据清洗及特征处理) kaggle实战-泰坦尼克(三.数据重构) kaggle实战-泰坦尼克(四.数据可视化) kaggle ...

最新文章

  1. JQUERY 常用方法汇总
  2. python3生成器_Python3 生成器
  3. 【转载】JAVA内存模型和线程安全
  4. SAP 电商云 Spartacus UI Quick Order 主页的实现
  5. python csv使用_python CSV模块的使用
  6. 索引体积_米家温湿度计体积虽小,耗电不小,如果经常离线,换颗电池吧
  7. Hadoop学习笔记—16.Pig框架学习
  8. jdbc存储过程mysql_使用JDBC操作存储过程
  9. luajit日记-配置说明
  10. 五分钟搞定单片机keil5 运行破解安装教程
  11. 国税报表html,国税纳税申报表在哪里打印
  12. stata14中文乱码问题
  13. 破解 京东登录滑块验证
  14. 待得天晴花已老,不如携手雨中看
  15. No JSON object could be decoded
  16. bzoj 3356: [Usaco2004 Jan]禁闭围栏 离散化+树状数组
  17. smartfusion2芯片的一些特性
  18. 小米手机(HM1SW)高通开发android程序全过程
  19. google原生ROM的发布地址
  20. 九耶丨阁瑞钛伦特-金融软件开发介绍

热门文章

  1. 机房接地系统图,彻底清楚机房接地
  2. [UE4]使用材质将图片变成黑白
  3. Offsetof用法
  4. 机器视觉中Blob分析
  5. 如何使用MySQL Shell连接数据库
  6. 极限----1的无穷次幂指数的解法规则
  7. html5网页自动下滑,html5 css3 让你的网页动起来
  8. 魔兽世界转服务器显示待定,魔兽世界角色转移条件 魔兽世界角色转移待定怎么取消...
  9. 应力波扩频通信系统一般结构
  10. Python第5次作业 吴为橦