4. 机器学习实战 之 泰坦尼克号生存预测问题

学习机器学习的小伙伴,在入门的时候可以通过相对赶紧简单和干净的数据入门。 最常用的数据集就是我在之前写的MNIST,波士顿房价,还有今天要给大家介绍的泰坦尼克号生存预测问题。

泰坦尼克号的故事背景大家一定都非常熟悉了,下面我们一起来探索一下相关数据,以及看看如何用机器学习的方法进行分类预测。

数据加载

本数据也是Kaggle平台的入门数据之一,可以同Kaggle平台下载训练数据和测试数据,这个竞赛项目也是长年开放的,大家也可以将自己的预测结果上传到Kaggle上。
https://www.kaggle.com/c/titanic/data

import pandas as pd
train_data = pd.read_csv("train.csv")

#预览一下数据
train_data.head()
PassengerId	Survived	Pclass	Name	Sex	Age	SibSp	Parch	Ticket	Fare	Cabin	Embarked
0	1	0	3	Braund, Mr. Owen Harris	male	22.0	1	0	A/5 21171	7.2500	NaN	S
1	2	1	1	Cumings, Mrs. John Bradley (Florence Briggs Th...	female	38.0	1	0	PC 17599	71.2833	C85	C
2	3	1	3	Heikkinen, Miss. Laina	female	26.0	0	0	STON/O2. 3101282	7.9250	NaN	S
3	4	1	1	Futrelle, Mrs. Jacques Heath (Lily May Peel)	female	35.0	1	0	113803	53.1000	C123	S
4	5	0	3	Allen, Mr. William Henry	male	35.0	0	0	373450	8.0500	NaN	S

print(train_data.shape)
(891, 12)

train_data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
PassengerId    891 non-null int64
Survived       891 non-null int64
Pclass         891 non-null int64
Name           891 non-null object
Sex            891 non-null object
Age            714 non-null float64
SibSp          891 non-null int64
Parch          891 non-null int64
Ticket         891 non-null object
Fare           891 non-null float64
Cabin          204 non-null object
Embarked       889 non-null object
dtypes: float64(2), int64(5), object(5)
memory usage: 83.7+ KB

#可以看到有一些列 比如Cabin,Age有非常多的缺失值

缺失值处理

泰坦尼克号的数据预处理有两点非常值得大家练手,首先就是缺失值处理,可以看到Cabin和Age是有相当多的缺失值的。

缺失值常见处理方式:

  1. 如果缺值的样本占总数比例极高,可以直接舍弃了,否则作为特征可能会有带来噪声,影响结果
  2. 如果缺值的样本数适中,且该特征是非连续值(离散),可以把NaN作为一个类别Category,加到类别特征中
  3. 如果缺值的样本数适中,且该属性为连续值,可以考虑给定一个step(比如这里的age,可以考虑每隔2/3岁为一个步长),然后把它离散化,之后把NaN作为一个category加类别特征中
  4. 有些情况下,缺失的值个数并不是特别多,那我们也可以试着根据已有的值,拟合一下数据,补充上

处理Cabin缺失值
在决定处理之前不妨先看一下Cabin分布情况。

Cabin = train_data['Cabin']
Cabin.value_counts()

B96 B98        4
C23 C25 C27    4
G6             4
E101           3
D              3
              ..
F38            1
C50            1
A5             1
C91            1
E63            1
Name: Cabin, Length: 147, dtype: int64

可以看到Cabin的值比较分散,Cabin值基本出现不大于4次,很多都只出现一次。
下面看一下Cabin的有无对Survive与否的影响。

import matplotlib.pyplot as plt
%matplotlib inline

fig 
  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值