决策树和随机森林实例——泰坦尼克号存活问题

1、背景介绍

大家都看过电影泰坦尼克号,是历史上一件家喻户晓的灾难性事件;泰坦尼克号沉船事故,1912年,当时属于英国的世界级豪华客轮泰坦尼克号,因在处女航行中不幸撞上北大西洋冰山而沉没。这场事故使得1500多名乘客患难。后来,这场震惊世界的惨剧被详细地调查,而且遇难乘客的信息也逐渐被披露。在当时救援条件下,无法短时间内确认每位乘客生还的可能性。而今,许多科学家视图通过计算机模拟和分析找出潜藏在数据背后的生还逻辑。我们也尝试通过代码,揭开尘封了100多年的数据的面纱。

数据简介

在这里插入图片描述

任务目标

任务:预测泰坦尼克号乘客能否存活 预测模型 分类问题

2、导入模块和数据

from sklearn.tree import export_graphviz
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.feature_extraction import DictVectorizer
from sklearn.metrics import classification_report
import seaborn as sns
import numpy as np
# 导入测试集数据和训练集数据
train_df = pd.read_csv('mytrain.csv')
test_df = pd.read_csv('mytest.csv')
# 导入测试集答案
test_y = pd.read_csv('mygender.csv')
test_y = test_y[['Survived']]
train_df

在这里插入图片描述

# 合并训练集合测试集的数据,drop无用的特征
all_df = train_df.append(test_df, ignore_index=True)
all_df.drop(['Unnamed: 12', 'Unnamed: 11'], axis=1, inplace=True)
all_df.info()

在这里插入图片描述

3、 描述性分析:分析各个特征跟存活率之间的关系

# 查看各个特征和存活之间的关系
# 'Embarked' 和 'Survived'的关系
sns.barplot(data=train_df, x='Embarked', y='Survived')

# 从以下图可以看出,Embarked为"C"的乘客存活率较高

在这里插入图片描述

# 进一步探究不同Embarked与所属仓位的关系
sns.catplot(x='Pclass', col='Embarked', data=train_df, kind='count')

# Embarked=S 的 1等座乘客所占比例最多

在这里插入图片描述

# Parch与Survived
sns.barplot(data=train_df, x='Parch', y='Survived')

# 同行乘客中父母及子女的数量为1-3人的存活率较高

在这里插入图片描述

# SibSp与Survived
sns.barplot(data=train_df, x='SibSp', y='Survived')
# 与乘客同行的同辈数量为1-2的存活率较高

在这里插入图片描述

# Pclass与Survived
sns.barplot(data=train_df, x='Pclass', y='Survived')

# 1等座的乘客存活率最高

在这里插入图片描述

# Sex与Survived
sns.barplot(data=train_df, x='Sex', y='Survived')

# 女性的存活率远高于男性

在这里插入图片描述

# Age与Survived
# 创建坐标轴
ageFacet = sns.FacetGrid(data=train_df, hue='Survived', aspect=3)
# 选择图形类型
ageFacet.map(sns.kdeplot, 'Age', shade=True)
# 设置坐标轴
ageFacet.set(xlim=(0, train_df.Age.max()))
# 添加标签
ageFacet.add_legend()

# 从图中可以看出0-10岁的存活率高于普通值

在这里插入图片描述

# Fare与Survived
# 创建坐标轴
ageFacet = sns.FacetGrid(data=train_df, hue='Survived', aspect=3)
# 选择图形类型
ageFacet.map(sns.kdeplot, 'Fare', shade=True)
# 设置坐标轴
ageFacet.set(xlim=(0, train_df.Fare.max()))
# 添加标签
ageFacet.add_legend()

# 票价较高的乘客,存活率较高一些。

在这里插入图片描述

# 查看票价的特征分布
farePlot = sns.displot(all_df['Fare'][all_df['Fare'].notnull()], label='skewness:%.2f'%(all_df['Fare'].skew()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AIGC人工智残

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值