本文利用Python对kaggle网站中的泰坦尼克号沉船事件中的乘客生存情况进行预测。
本文进行预测的步骤如下所示:
一、提出问题
在泰坦尼克号沉船事件中什么样的人更容易存活?
二、理解数据
1、数据采集
本项目地址如下:
Titanic: Machine Learning from Disasterwww.kaggle.com从kaggle中下载数据集后可知,数据集包括两部分,分别为train.csv和test.csv
对数据集中字段含义整理如下:
2、数据导入
#导入数据处理包
import numpy as np
import pandas as pd
#导入训练数据集
train=pd.read_csv("./train.csv")
#导入测试数据集
test=pd.read_csv("./test.csv")
#查看数据集大小
print('训练数据集:',train.shape,'测试数据集:',test.shape)
结果为:训练数据集: (891, 12) 测试数据集: (418, 11)
由于有两个数据集,因此在进行数据清洗前,需要对两个数据集进行合并,不仅使得数据清洗更加方便,而且有利于提高机器学习正确率
#合并数据集,方便同时对两个数据集进行清洗
full=train.append(test,ignore_index=True)
#查看合并后的数据集大小
print('合并后的数据集:',full.shape)
结果为:合并后的数据集: (1309, 12)
3、数据查看
#查看数据整体情况
full.head()
结果为:
#查看数值类型列的描述统计信息
full.describe()
结果为:
#查看每一列的数据类型和数据总量
full.info()
结果为:
从结果可知,数据总共有1309行,其中
数值类型列:年龄(Age)、船票价格(Fare)中数据有缺失;
1)年龄(Age)里面数据总数是1046条,缺失了1309-1046=263条,缺失率263/1309=20%
2)船票价格(Fare)里数据总数是1308条,缺失了1条数据
字符串类型列:船舱号(Cabin)、登船港口(Embarked)中数据有缺失;
1)船舱号(Cabin)里面数据总数为295条,缺失了1309-295=1014条,缺失率1014/1309=77.5%
2)登船港口(Embarked)里面数据总数为1307条,缺失了2条数据
三、数据清洗
1、数据预处理
数据预处理的一般步骤为:
很多机器学习算法为了训练模型,要求所传入的特征中不能有空值。如果有缺失值,处理方法一般为:
- 如果是数值类型有缺失值,用平均值取代
- 如果是分类数据有缺失值,用最常见的类别取代
- 使用模型预测缺失值,例如