kaggle入门泰坦尼克之灾内容总结
[泰坦尼克之灾](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入门泰坦尼克之灾内容总结相关推荐
- kaggle入门-泰坦尼克之灾
kaggle入门-泰坦尼克之灾 引言 数据认识 总结 特征处理 建模预测 logistic分类模型 随机森林 SVM xgboost 模型验证 交叉验证 学习曲线 高偏差: 高方差 模型融合 总结 后 ...
- Kaggle滑水 - 泰坦尼克之灾(决策树)
本文以Kaggle新手习题--Titanic: Machine Learning from Disaster为场景开展实验,以此熟悉Kaggle平台. 本文的源码托管于我的Github:Practic ...
- kaggle 入门 泰坦尼克 处理过程
一.数据预处理 pandas库的内容(数据分析处理): read_csv :读取文件,变为矩阵 head(n) : 输出前n行内容,默认5 PassengerId Survived Pclass \ ...
- 小白的机器学习之路(1)---Kaggle竞赛:泰坦尼克之灾(Titanic Machine Learning from Disaster)
我是目录 前言 数据导入 可视化分析 Pclass Sex Age SibSp Parch Fare Cabin Embarked 特征提取 Title Family Size Companion A ...
- Kaggle竞赛——Titanic泰坦尼克之灾(0.76315==>0.79186)
Kaggle竞赛网址:https://www.kaggle.com/c/titanic 上一章:Kaggle竞赛--Titanic泰坦尼克之灾(保姆级基础版) 本次Kaggle泰坦尼克之灾分析过程大致 ...
- Kaggle竞赛——Titanic泰坦尼克之灾(保姆级基础版)
Kaggle竞赛网址:https://www.kaggle.com/c/titanic 本次Kaggle泰坦尼克之灾分析过程大致分为: 第1步:了解数据 第2步:分析数据之间的关系 第3步:缺失项数据 ...
- kaggle实战—泰坦尼克(五、模型搭建-模型评估)
kaggle实战-泰坦尼克(一.数据分析) kaggle实战-泰坦尼克(二.数据清洗及特征处理) kaggle实战-泰坦尼克(三.数据重构) kaggle实战-泰坦尼克(四.数据可视化) kaggle ...
- kaggle实战—泰坦尼克(三、数据重构)
kaggle实战-泰坦尼克(一.数据分析) kaggle实战-泰坦尼克(二.数据清洗及特征处理) kaggle实战-泰坦尼克(三.数据重构) kaggle实战-泰坦尼克(四.数据可视化) kaggle ...
- kaggle实战—泰坦尼克(二、数据清洗及特征处理)
kaggle实战-泰坦尼克(一.数据分析) kaggle实战-泰坦尼克(二.数据清洗及特征处理) kaggle实战-泰坦尼克(三.数据重构) kaggle实战-泰坦尼克(四.数据可视化) kaggle ...
最新文章
- JQUERY 常用方法汇总
- python3生成器_Python3 生成器
- 【转载】JAVA内存模型和线程安全
- SAP 电商云 Spartacus UI Quick Order 主页的实现
- python csv使用_python CSV模块的使用
- 索引体积_米家温湿度计体积虽小,耗电不小,如果经常离线,换颗电池吧
- Hadoop学习笔记—16.Pig框架学习
- jdbc存储过程mysql_使用JDBC操作存储过程
- luajit日记-配置说明
- 五分钟搞定单片机keil5 运行破解安装教程
- 国税报表html,国税纳税申报表在哪里打印
- stata14中文乱码问题
- 破解 京东登录滑块验证
- 待得天晴花已老,不如携手雨中看
- No JSON object could be decoded
- bzoj 3356: [Usaco2004 Jan]禁闭围栏 离散化+树状数组
- smartfusion2芯片的一些特性
- 小米手机(HM1SW)高通开发android程序全过程
- google原生ROM的发布地址
- 九耶丨阁瑞钛伦特-金融软件开发介绍