Kaggle泰坦尼克号生存预测挑战
这是kaggle上Getting Started 的Prediction
Competition,也是比较入门和简单的新人赛,我的最好成绩好像有进入top8%,重新地回顾巩固一下这个比赛,我将分成三个部分:
- ** Kaggle泰坦尼克号生存预测挑战——数据分析 **
- ** Kaggle泰坦尼克号生存预测挑战——特征工程 **
- ** Kaggle泰坦尼克号生存预测挑战——模型建立、模型调参、融合 **
先修知识
- numpy
- pandas
- matplotlib
- seaborn
- sklearn
**赛题地址:[ Titanic: Machine Learning from Disaster
](https://www.kaggle.com/c/titanic) **
泰坦尼克号的沉没
1912年4月15日,在她的处女航中,被普遍认为“沉没”的RMS泰坦尼克号与冰山相撞后沉没。
不幸的是,船上没有足够的救生艇供所有人使用,导致2224名乘客和机组人员中的1502人死亡。虽然幸存有一些运气,但似乎有些人比其他人更有可能生存。
在这一挑战中,我们要求您建立一个预测模型来回答以下问题:“什么样的人更有可能生存?” 使用乘客数据(即姓名,年龄,性别,社会经济舱等)
任务分析 :这是一个分类任务,建立模型预测幸存者
数据集
- 训练集:891*12,含891个样本,11+1个特征(一个是target)
- 测试集:418*11,含418个样本,11个特征
Overview:
- PassengerId:乘客ID — id号作用不大,考虑删除
- Survived:存活 (target) ---- 标签:1代表存活 0 代表没有幸存
- Pclass:舱位等级 ---- 分成三个等级 1 2 3
- Name:姓名 — 由于外国的姓氏有等级之分,有意义
- Sex:性别 — 女士是否优先??
- Age:年龄 — 年轻人可能存活多??
- SibSp:泰坦尼克号上的兄弟姐妹/配偶数 — 有待考查
- Parch:泰坦尼克号上的父母/子女数量 — 有待考查
- Ticket:票据 — 有待考查
- Fare:票价 — 票价高的可能待遇高
- Cabin:船舱号 — 不同的船舱或许获得求生不同
- Embarked:登船港口 ---- C = Cherbourg;Q = Queenstown;S = Southampton
代码实现
导入相关的库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
seed =2020
数据概览
1. 加载数据方法 :pd.read_csv(),pd.read_table()
* pd.read_csv():读取以‘,’分割的文件到DataFrame,用于读取csv文件(csv用逗号符分隔字符段)
* pd.read_table():读取以‘\t’分割的文件到DataFrame,用于读取tsv文件(tsv用制表符分隔字符段)
* 实质上两个方法都是通用的,函数中参数sep可以选定分隔符的类型
例如用read_csv()读取tsv文件,df = pd.read_csv(file_path,sep='\t')
2. 处理大型文件或内存不足时,采用分块读取方式:
* 使用参数chunksize指定文件块的大小(用于迭代)
df = pd.read_csv(file_path,chunksize = 100)
for i in df: ##用循环的方式即可迭代读取DataFrame
print(i)
3. 更多常用参数 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200818201834195.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzUzMjAwMA==,size_16,color_FFFFFF,t_70#pic_center)
##加载数据 不建议把特征名转成中文,在画图时可能出现乱码
train_df = pd.read_csv('data_train.csv')
test_df = pd.read_csv('data_test.csv')
##数据预览 查看前5行的数据
train_df.head()
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200818202028525.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzUzMjAwMA==,size_16,color_FFFFFF,t_70#pic_center)
test_df.head()
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200818202052866.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzUzMjAwMA==,size_16,color_FFFFFF,t_70#pic_center)
- DataFrame.info(): 可以对数据进行简要的概览,非空样本数,特征行的类型,特征数
- DataFrame.describe(): 输出数值型特征的一些统计量
train_df.info()
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200818202306112.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly