沉没的泰坦尼克号的幸存者数据分析

案例:使用seaborn分析泰坦尼克号生还者数据 使用seaborn分析泰坦尼克号生还者数据 一、数据来源(数据的导入) 二、主要分析的内容(定义问题) 泰坦尼克号乘客基本信息分布情况?? 乘客的信息与生还数据是否有关联?? 三、数据清洗 3.1 查看是否有缺失值 3.2 查看数据基本信息 3.3 绘制年龄分布图,通过seaborn的distplot函数查看乘客的年龄分布 3.4 从上图可以看出年龄呈现正态分布-- 对年龄缺失值进行填充,再次可视化 3.5 根据性别 绘制年龄分布图 3.6 登船地点分布情况(用countplot 阅读详情

点击蓝色字关注我们!

一个努力中的公众号

长的好看的人都关注了

泰坦尼克号是英国白星航运公司下的一艘奥林匹克级邮轮,号称永不沉没,然而在1912年4月14日却与冰山相撞,沉没水中。2224 名船员及乘客中,有 1517 人丧生,是一次伤亡惨重的海难。

而泰坦尼克号数据分析比赛是 Kaggle[1] 上的一个比赛,通过训练集和测试机来预测乘客的生还情况。

环境

  • Python 3.6

  • WSL ubuntu 18.04

  • VS Code

读取数据

首要目的是将数据读取到内存中,pandas 库可以方便的对数据进行读取。

import pandas as pd
# /mnt/e/python-learn/data/titanic/train.csv
titanic_test_data = pd.read_csv(r'/mnt/e/python-learn/data/titanic/train.csv')

数据清洗

数据清洗在数据分析中占有很重要的一部分。通过下面代码我们可以知道读入数据的数据结构。

titanic_test_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

”

通过观察可以发现,部分数据是丢失的,比如说 Age、Cabin、Embarked。

这里可以看出所有的属性字段,但是有一些字段对于我们的研究是无关的。

PassgengerId 该属性对于乘客是否被救是无关的。

Name,姓名可以说对我们的研究是不太相关的,但是也不能说完全不相关,比如说我们可以从姓名中找到该乘客的家族等。这里我们可以选择把他剔除掉。

Ticket 该字段每个值都是不同的,不会对预测结果产生影响。

Cabin 值缺失太多,我们无法直接去使用

所以我们先把这些无用值进行剔除。

titanic_test_data = titanic_test_data[['Survived', 'Pclass',
                                       'Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Embarked']]

下面就要对这些缺失值进行补全。对缺失值进行补全的方法有很多:

  1. 忽略元组

  2. 人工填写缺失值

  3. 使用一个全局常量填充缺失值

  4. 使用属性的中心度量填充缺失值

  5. 使用与给定元组属同一类的所有样本的属性均值或者中位数

  6. 使用最有可能的值填充缺失值

这里我采用了使用第四点,使用属性的中心度量填充缺失值。

使用平均值对数据进行填充。

# Age
age_median = titanic_train_data['Age'].mean()
titanic_train_data['Age'] = titanic_train_data['Age'].fillna(age_median)

数据归一化

可以看出来,有些属性的值是字符串类型,这些类型对于计算机来说是操作不利的,要将字符串类型改为数值类型。

Sex 这一栏中,给定的值为 male 和 female 两个值,我们可以将它们转化为 0 与 1。

titanic_train_data['Sex'] = [ 1 if x == 'male' else 0 for x in titanic_train_data.Sex]

还有 embarked 也可以进行调整,将字符 C,S,Q 进行转换。

titanic_train_data['Embarked'][titanic_train_data['Embarked'] == 'S'] = 1
titanic_train_data['Embarked'][titanic_train_data['Embarked'] == 'C'] = 2
titanic_train_data['Embarked'][titanic_train_data['Embarked'] == 'Q'] = 3

最后将 label 数据分离出来。

y_data = titanic_train_data
titanic_train_data = titanic_train_data[['Pclass','Sex', 'Age', 'SibSp','Parch', 'Fare', 'Embarked']]
y_label = y_data[['Survived']]

可以用上述方法处理测试集数据。

对 Embarked 进行补全,我们采取出现频率最高的进行补全。

embarked_value = titanic_train_data['Embarked'].value_counts().index[0]
titanic_train_data['Embarked'] = titanic_train_data['Embarked'].fillna(
    embarked_value)

训练模型

创建 Tensor

创建 Tensor。采用线性回归,y = wx + b 。

在数据处理的时候,只留下了7列数据来供我们使用,而最后的结果值只有一个。所以我们对数据进行定义的时候要明白我们的定义的形状。

y = tf.placeholder(name='y', shape=[None, 1], dtype=tf.float32)
x = tf.placeholder(name='x', shape=[None, 7], dtype=tf.float32)
w = tf.Variable(tf.random_uniform([1, 7]), name='w', dtype=tf.float32)
b = tf.Variable(tf.random_uniform([1]), name='b')

Tensor 定义完成后,需要进行对式子进行表达。

z = tf.matmul(w, tf.transpose(x)) + b

损失函数

损失函数是对模型评估的重要方法,这里采用交叉熵进行评估。

loss = tf.nn.sigmoid_cross_entropy_with_logits(
    labels=y_label_data_array_shape , logits=z)
loss = tf.reduce_mean(loss)

优化器

通过优化器来对函数进行求解。这里采用 AdagradOptimizer 算法进行计算,学习率初值为 0.5 。

optimizer = tf.train.AdagradOptimizer(0.5).minimize(loss=loss)

进行训练

我选择了 epoch 为 10000,进行 10000 轮的迭代。同时要对 y_label 进行一下转换,保证形状的正确性。

epoch = 10000
y_label_data_array_shape = tf.reshape(y_label, [1, 891])
y_label_data_array_shape = tf.to_float(y_label_data_array_shape)

每次都将所有的值进行投喂,进行结果训练,并每100次将值进行打印输出,查看当前计算的损失值。

最后将输出的值进行划分为 0 和 1 .

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())

    for i in range(epoch):
        feed = {x: titanic_train_data, y: y_label}
        sess.run(optimizer, feed_dict=feed)

        if i % 100 == 0:
            loss_value = sess.run(
                [loss], feed_dict=feed)
            print(i//100 + 1,   ' loss =>', loss_value)

    pred = sess.run(tf.nn.sigmoid(z) , feed_dict={x: titanic_test_data})
    
    sur = [1 if x > 0.5 else 0 for x in  pred.flatten()]
    submission = pd.DataFrame({
        'PassengerId': original_test_data['PassengerId'],
        'Survived':  sur
    })

    submission.to_csv('titanic-submission.csv', index=False)

这里通过测试集的正确率是 0.78 。

算法还在不断完善。

好看的人才能点


泰坦尼克号幸存者预测 泰坦尼克号的沉没是世界上最严重的海滩事故之一,通过模型来预测哪些人可能成为幸存者。 1、导入基本所需的库 import numpy as np import pandas as pd import matplotlib.pyplot as plt %matplotlib inline import seaborn as sns plt.style.use('fivethirtyeight') ... 阅读详情

相关推荐

机器学习-泰坦尼克号数据集

机器学习-泰坦尼克号数据集

泰坦尼克号幸存者数据分析

这是一艘号称当时世界上最大的邮轮,船上的人年龄各异,背景不同,有贵族豪门,也有平民旅人,邮轮撞击冰山后,船上的人马上采取措施安排救生艇转移人员,从本次海难中存活下来的,也就是幸存者。:各等级船舱中男性乘客多于女性乘客,但是女性乘客的获救比例都高于男性乘客。不同等级船舱的女性乘客的获救率高于男性,这可能是女士优先的原因。:小孩、青少年、成年人、老年人的获救比例依次从高到低,小孩的获救比例最高,老年人的获救比例最低。船舱等级对于乘客的获救率存在较大的影响。不同等级船舱的男性乘客与女性乘客的获救率。

Java/Python大数据随笔 7159

泰坦尼克号数据集

泰坦尼克号数据集。 Titanic数据集在数据分析领域是十分经典的数据集。泰坦尼克号轮船的沉没是历史上最为人熟知的海难事件之一。1912年4月15日,在她的处女航中,泰坦尼克号在与冰山相撞后沉没,在船上的 2224 名乘客和机组人员中,共造成 1502 人死亡。这场耸人听闻的悲剧震惊了国际社会,从而促进了船舶安全规定的完善。造成海难失事的原因之一是乘客和机组人员没有足够的救生艇。尽管在沉船事件中幸存者有一些运气因素,但有些人比其他人更容易存活下来,究竟有哪些因素影响着最终乘客的生存与否呢? 数据集包含11个特征,分别是: Pclass:乘客所持票类,有三种值(lower,middle,upper) Survived:0代表死亡,1代表存活 Name:乘客姓名 Sex:乘客性别 Age:乘客年龄(有缺失) SibSp:乘客兄弟姐妹/配偶的个数(整数值) Parch:乘客父母/孩子的个数(整数值) Ticket:票号(字符串) Fare:乘客所持票的价格(浮点数,0-500不等) Cabin:乘客所在船舱(有缺失) Embark:乘客登船港口:S、C、Q(有缺失)

Pandas深入分析泰坦尼克数据集:从数据清洗到洞见发现

Survived:是否幸存(0=否,1=是)Pclass:船舱等级(1/2/3等舱)Sex:性别Age:年龄SibSp:兄弟姐妹/配偶数量Parch:父母/子女数量Fare:船票价格Embarked:登船港口(C=Cherbourg, Q=Queenstown, S=Southampton)Cabin:船舱编号性别差异:女性幸存率(74.2%)显著高于男性(18.9%)阶级影响:头等舱幸存率(63%)远高于三等舱(24.7%)年龄因素:儿童(尤其5岁以下)幸存率高于其他年龄段票价关联。

xiaoyu❅的博客 1522

泰坦尼克幸存者预测数据集

Titanic数据集是非常适合数据科学和机器学习新手入门练习的数据集。 数据集为1912年泰坦尼克号沉船事件中一些船员的个人信息以及存活状况。这些历史数据已经非分为训练集和测试集,你可以根据训练集训练出合适的模型并预测测试集中的存活状况。

Titanic-master泰坦尼克号幸存者数据.zip

Titanic-master泰坦尼克号幸存者数据

对泰坦尼克号沉没事件幸存者数据分析和预测

Titanic.csv数据中包含了891个样本,记录了泰坦尼克号遇难时的891个乘客的基本信息,其中包括以下信息:PassengerId: 乘客编号Survived: 生还情况,生还为1,死亡为0Pclass: 舱位,分为1,2,3等,1为最高的,3为最低等Name: 姓名Sex: 性别Age: 年龄SibSp: 同船的兄弟姐妹或配偶Parch: 同船的父母或子女Ticket: 船票信息Fare: 乘客票价Cabin: 客舱编号。

qq_62974479的博客 3272

泰坦尼克号幸存者数据集

本数据集来自于Kaggle,数据内容非常的简单,包含乘客的基本个人信息和最终是否存活信息,适合新手上车

利用R语言对泰坦尼克号沉没事件幸存者的数据分析与预测

题外话:在文章正式开始之前,我还是想先写一点题外话,一是为了引出写作这篇博客的目的,二则是希望能够记录下现在的所思所想为以后留个纪念。首先介绍一下自己,毕业3年多的小硕一枚,大学期间学的专业是高分子材料,毕业后也一直在从事化工行业方面的工作。最近由于公司变动,再加上本身自己对于未来规划以及个人兴趣的原因,使我产生了转行的想法。而数据分析作为我在学生时代就已经有所接触的方向,确实对我有着很大的吸引,

xpexia的博客 1万+

泰坦尼克号幸存者数据集(特征工程处理后)

本数据集为经过特征工程处理后的泰坦尼克号幸存者数据集。原数据集特征为11个,该数据集特征为26个。配合原数据集使用,提供示例代码。 该数据集对原数据集进行了特征工程,由原来的11个特征增加到26个特征。具体特征可以看数据的字段名字。 以下为获得训练集、训练集标签和测试集的参考示例代码 import pandas as pd from sklearn.preprocessing import StandardScaler df_train = pd.read_csv('data/data54777/train.csv') df_test = pd.read_csv('data/data54777/test.csv') df_train_engineered = pd.read_csv('data/data54961/train_engineered.csv') df_test_engineered = pd.read_csv('data/data54961/test_engineered.csv') X_train = StandardScaler().fit_transform(df_train_engineered) y_train = df_train['Survived'].values X_test = StandardScaler().fit_transform(df_test_engineered)

Veristand自动化测试:Stimulus Profile Editor实战指南

本文是Veristand自动化测试中Stimulus Profile Editor的实战指南。详细介绍了如何利用这一图形化工具,将繁琐的手动测试流程转化为一键自动执行的“剧本”,涵盖工程控制、信号编程、预制动作调用等核心功能,并通过手把手案例演示了构建首个自动化测试脚本的全过程,帮助测试工程师显著提升效率与可靠性。

dd012的博客 495

R语言Kaggle泰坦尼克号性别阶级模型数据分析案例

原文链接:http://tecdat.cn/?p=6062 这场灾难以拯救“妇女和儿童第一”而闻名,所以让我们来看看性别和年龄变量。我们将从乘客的性别开始。将数据重新加载到R后,请查看此变量的摘要: > summary(train$Sex) female male 314 577 所以我们看到大多数乘客都是男性。对幸存的男性和女性进行双向比较: > prop.ta...

大数据部落 2304

Delta并联机械手-Codesys实现以及正解逆解研究

由于Codesys的Robotics模块有Delta并联机械手的运动模型,因此借助Codesys的机械手运动模型,研究自己的正解逆解算法。

weixin_42386991的博客 5567

【机器学习实战】基于python对泰坦尼克幸存者进行数据分析与预测

在本文中,从数据的角度出发对泰坦尼克幸存者进行分析与预测,适合零基础入门数据分析并了解建模过程的朋友。

复杂网络的博客 1万+

国产数据库迁移必看:达梦到ES的CDC方案优化全记录(含完整代码)

本文详细记录了从达梦数据库到Elasticsearch的CDC方案优化全过程,涵盖触发器方案局限性、Debezium架构优势及完整代码实现。通过Flink集成和性能调优,实现毫秒级延迟同步,显著降低数据库负载,为国产数据库迁移提供可落地的技术方案。

weixin_29079671的博客 500

什么是OAuth 2.0?

OAuth2.0是一种授权协议而非登录协议,核心思想是通过令牌(Token)而非密码实现安全授权。它涉及三个关键角色:用户、第三方应用和身份提供商(IdP)。最常用的授权码流程(AuthorizationCode Flow)通过浏览器三方对话,确保用户密码只提供给IdP而非第三方应用。OAuth2.0提供四种授权方式,其中授权码和客户端凭证是当前主流,而隐式和密码模式已不推荐。需要注意的是,OAuth2.0解决的是授权问题,身份认证需通过OpenID Connect实现。该协议通过临时令牌机制,实现了&qu

sonadorje的专栏 1162

day22 kaggle的实战数据泰坦尼克号幸存者预测

泰坦尼克号是20世纪初最豪华的客运轮船,被誉为“永不沉没”,却在1912年首航时与冰山相撞沉没,导致逾1500人丧生。Kaggle平台的“Titanic: Machine Learning from Disaster”竞赛以此为案例,旨在通过机器学习预测乘客生存率。项目使用Python进行数据分析,包括数据加载、清洗、特征工程和模型构建。通过可视化分析,发现性别、年龄、票价、船舱等级等因素与生存率相关。模型构建阶段,比较了多种机器学习算法。

weixin_54274596的博客 2209

基于Jeecgboot3.9.0的flowable7.2.0流程增加一个OA请假单功能例子(二)

基于Jeecgboot3.9.0的flowable7.2.0流程增加一个OA请假单功能例子(二)

宁波阿成的博客 198

泰坦尼克号数据集_分类树预测经典实例——泰坦尼克号幸存者预测

泰坦尼克号幸存者预测是kaggle上一个较为经典的数据分析案例,之前做了这个案例,今天向大家分享一下自己的学习笔记。数据集来源:https://www.kaggle.com/c/titanic​www.kaggle.com为了让部分没看过《泰坦尼克号》这部电影的小伙伴也能对数据背景有一个基本认识,我们简单概括一下背景:泰坦尼克号的沉没是世界上最严重的海难事故之一,造成了大量的人员伤亡。这是一艘号称...

weixin_39735509的博客 2301

使用Python爬虫抓取旅游景点评价数据并进行热度可视化

景点热度通常由景点的评分、评论数以及游客的热情度来决定。高热度的景点通常意味着更高的游客评分和更多的游客评论。热度不仅反映了景点的受欢迎程度,还可以揭示某些景点的潜力和存在的问题。评分:游客对景点的综合评分,通常是0到5分。评论数:景点的评论数量,反映了游客对景点的关注程度。热度变化:在一定时间内,景点的评价和评论数量变化,能够反映景点的热度波动。通过使用Python爬虫技术抓取旅游景点的评价和评论数据,我们能够深入分析景点的热度,并通过数据可视化工具将这些信息展示给用户。

2201_76125261的博客 1282

Linux下驱动开发_块设备驱动开发(硬件上采用SD卡+SPI协议)

这一篇文章将采用SD卡作为存储硬件,利用SPI协议与SD卡通信,完成块设备驱动开发测试。 SD卡可以更加形象的表示块设备开发过程,明白硬件如何交互,完成数据读写。

2605

泰坦尼克号数据_数据挖掘经典实例——泰坦尼克号幸存者预测

泰坦尼克号幸存者预测是kaggle上一个较为经典的数据分析案例,之前做了这个案例,今天向大家分享一下自己的学习笔记。小伙伴注意了,本次实例分为两部分,第一部分(也就是本篇)我们会用我们之前使用过的一些数据挖掘方法来对数据集进行探索,并进行幸存者预测;第二部分(下篇)我们会使用机器学习的内容,利用分类树模型来进行幸存者预测。数据集来源:https://www.kaggle.com/c/titanic...

weixin_39541189的博客 1583

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

浅析那些带着“主角光环“的泰坦尼克号幸存者

作者简介Introduction邬书豪,车联网数据挖掘工程师 ,R语言中文社区专栏作者。微信ID:tsaiedu知乎专栏:https://www.zhihu.com/people/wu-shu-hao-67/activities往期回顾kaggle:数据科学社区调查报告(附学习视频)kaggle:员工离职预测(附学习视频)Kaggle:纽约的士旅程数据简要分析Kaggle:R可视化分析美国枪击案(

R语言中文社区 1408

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

沉船会有什么_泰坦尼克号为何会沉没,百年来又为何一直没有打捞?专家一声叹息...

泰坦尼克号之所以会让世人所熟知,离不开一名叫海伦·丘吉尔·坎迪的单身母亲的“生死劫”。时光回到1912年4月12号,坎迪激动兴奋地上了当时靠在法国的瑟堡港的 “泰坦尼克”, 之所以激动兴奋,是因为“泰坦尼克”有两大特点:一是豪华——被称为世界上第一豪华的邮轮。二是安全——被称为永不沉没的邮轮。​然而,坎迪的激动和兴奋很快就被惊恐和绝望所代替。邮轮离开瑟堡行了不到2天,“泰坦尼克”号就撞上了冰山,并...

weixin_39718888的博客 572

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Kaggle泰坦尼克号生存预测挑战——数据分析

Kaggle泰坦尼克号生存预测挑战     这是kaggle上Getting Started 的Prediction Competition,也是比较入门和简单的新人赛,我的最好成绩好像有进入top8%,重新地回顾巩固一下这个比赛,我将分成三个部分: Kaggle泰坦尼克号生存预测挑战——数据分析 Kaggle泰坦尼克号生存预测挑战——特征工程 Kaggle泰坦尼克号生存预测挑战——模型建立、

大墅哥哥的博客 2649
上一篇: 当 Kotlin 爱上 React
下一篇: 用 Hugo 和 Firebase 建立自己的博客
代码猎奇站
博客等级 码龄7年 39粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值