机器学习实战——泰坦尼克号

通过泰坦尼克号生存项目来熟悉机器学习的整个流程,数据来源是kaggle上的titanic数据。该项目从数据获取->数据清洗->特征处理->构建模型->模型评估5个步骤进行分析。

该比赛提供了891名泰坦尼克号的乘客数据,包含乘客的姓名,性别、年龄、客舱等级等信息,数据中还包含一个最重要的信息:乘客是否生还(1:生还,0:遇难)。目的是通过对训练数据集的学习来构建一个分类预测模型,对测试数据集中的418名乘客生存情况进行预测。

数据来源链接:https://www.kaggle.com/c/titanic/data

  • train.csv 用于训练,标记了乘客是否生还的信息
  • test.csv  用于测试,没有标记乘客是否生还信息,该数据集需要用模型来预测乘客是否生还

数据导入:

导入我们的训练数据和测试数据

# 导入包:
import pandas as pd 
import numpy as np
# 读取数据:
train_data = pd.read_csv("/Desktop/泰坦尼克号/train.csv")
test_data = pd.read_csv("/Desktop/泰坦尼克号/test.csv")
# 查看前5行
train_data.head()

数据字段的含义:

数据集中有12 个字段,每一个字段的名称和含义如下

  • PassengerId:乘客 ID
  • Survived:是否生存
  • Pclass:客舱等级
  • Name:乘客姓名
  • Sex:性别
  • Age:年龄
  • SibSp:在船兄弟姐妹数/配偶数
  • Parch:在船父母数/子女数
  • Ticket:船票编号
  • Fare:船票价格
  • Cabin:客舱号
  • Embarked:登船港口

查看数据基本信息:

# 查看数据基本信息
train_data.info()

从上面info()中我们可以看出,Age, Cabin, Embarked这三个变量有缺失值。

删除一些无效的数据列:

有些变量在模型中是没有意义的,所以我们可直接在train_data中删除一些没有意义的变量,通过drop()方法来删除:PassengerId,Name,Ticket

# 删除无效的数据变量
train_data=train_data.drop(['PassengerId','Name','Ticket'],axis=1)
train_data.head()

单变量分析:

单变量数据就是每次只对1个变量进行分析,相对的,多变量数据就是同时对多个变量之间的相关性进行分析。单变量数据分析主要目的是对单个变量的数据分布进行查看,方便后期的数据预处理,常用的单变量分析方法有:频数分析、描述性统计、直方图等。

  • 频数分析:分析类别型变量每一个值出现的频数。
  • 描述性统计:对数值型变量的常用统计量进行分析:均值,总和,最小值,最大值,分位数。
  • 直方图:对数值型变量进行分段处理后进行频数分析并作图。

频数分析:(类别型变量)

数据集中的 Survived(是否生还), Pclass(客舱等级), Sex(性 别), Embarked(登船港口)等变量是类别型变量,所以可对他们进行频数分析。 

1、变量Survived(是否生还)的频数分析及可视化:

# 统计频数
Survived_freq=train_data.Survived.value_counts()
print(Survived_freq)
# 统计结果的可视化分析(条形图和饼图)
import matplotlib.pyplot as plt
import seaborn as sns 
%matplotlib inline
plt.figure(figsize=(12,5))
plt.subplot(121)
sns.countplot(x='Survived',data=train_data)
plt.title('Count')
plt.subplot(122)
plt.pie(Survived_freq,labels=Survived_freq.index,autopct='%1.0f%%')
plt.title('percent')
plt.show

我们从上述的分析中可以看出,训练样本中有38%的乘客生还了。

2、变量Pclass(客舱等级)的频数分析及可视化:

# 统计频数
Pclass_freq=train_data.Pclass.value_counts()
print(Pclass_freq)
# 统计结果的可视化分析(条形图和饼图)
import matplotlib.pyplot as plt
import seaborn as sns
plt.figure(figsize=(12,5))
plt.subplot(121)
sns.countplot(x='Pclass',data=train_data)
plt.title('Count')
plt.subplot(122)
plt.pie(Pclass_freq,labels=Pclass_freq.index,autopct='%1.0f%%')
plt.title('percent')
plt.show()

我们从上述的频数分析中可以看出,训练样本中3等舱的乘客最多占比55%,2等舱最少占比21%,1等舱占比24%。

3、变量Sex(性别)的频数分析及可视化: 

# 统计频数
Sex_freq=train_data.Sex.value_counts()
print(Sex_freq)
# 统计结果的可视化分析(条形图和饼图)
import matplotlib.pyplot as plt
import seaborn as sns
plt.figure(figsize&
  • 18
    点赞
  • 121
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值