一、任务描述

背景故事:

泰坦尼克号RMS Titanic),又译作铁达尼号,是英国白星航运公司下辖的一艘奥林匹克级游轮,排水量46000吨,于1909年3月31日在北爱尔兰贝尔法斯特港的哈兰德与沃尔夫造船厂动工建造,1911年5月31日下水,1912年4月2日完工试航。泰坦尼克号是当时世界上体积最庞大、内部设施最豪华的客运轮船,有“永不沉没”的美誉 。然而不幸的是,在它的处女航中,泰坦尼克号便遭厄运——它从英国南安普敦出发,途经法国瑟堡-奥克特维尔以及爱尔兰科夫(Cobh),驶向美国纽约。1912年4月14日23时40分左右,泰坦尼克号与一座冰山相撞,造成右舷船艏至船中部破裂,五间水密舱进水。4月15日凌晨2时20分左右,泰坦尼克船体断裂成两截后沉入大西洋底3700米处。2224名船员及乘客中,1517人丧生,其中仅333具罹难者遗体被寻回。泰坦尼克号沉没事故为和平时期死伤人数最为惨重的一次海难,其残骸直至1985年才被再度发现,目前受到联合国教育、科学及文化组织的保护。

泰坦尼克号的沉没是历史上著名的海难事件,当时登船乘客数以千计。他们的个人信息各不相同,生还罹难遭遇各异。虽然,人们对他们的遭遇表示不幸,但是这个灾难也给数据分析和预测提供了比较丰富的数据样品。

数据集中有部分缺失值,通过不同的方法进行填充

二、数据集分析

数据集来自Kaggle网站,网址为:https://www.kaggle.com/c/titanic

数据集中有12个特征,其中Survived是目标值,其余各个特征代表的意思:

  • PassengerId : 乘客ID,这个是自动生成的
  • Pclass : 乘客等级(1/2/3等舱位)
  • Name : 乘客姓名
  • Sex : 性别
  • Age : 年龄
  • SibSp : 堂兄弟/妹个数
  • Parch : 父母与小孩个数
  • Ticket : 船票信息
  • Fare : 票价
  • Cabin : 客舱
  • Embarked : 登船港口

三、代码实现

import pandas as pd   # 数据分析,组织表格的形式
import numpy as np
import matplotlib.pyplot as plt
from sklearn import neighborsdata = pd.read_csv('train.csv')
print(data.info())
print(data.head())  # 缺失值的识别
# 判断各变量中是否存在缺失值
print(data.isnull().any(axis=0))
# 各变量中缺失值的数量
print(data.isnull().sum(axis=0))
# 各变量中缺失值的比例
print(data.isnull().sum(axis = 0)/data.shape[0])# 缺失值的处理方法
# 方法1:删除法
# 删除无效列,drop默认删除行,列需要加axis=1
# 删除缺失严重的Cabin变量
data.drop(labels='Cabin',axis=1,inplace=True)
# 删除无关紧要的变量
data.drop(['PassengerId','Ticket','Name'],axis=1,inplace=True)
print(data.info())
print(data.head())
# 删除缺失行,根据Embarked变量,删除对应的缺失行
data.dropna(subset=['Embarked'], inplace=True)#print(data.isnull().sum())  #打印各个特征值的空值总和# 方法2:替换法,中位数,均值,众数等
'''
print(data.Age)
# 利用所有人年龄的中位数来填补 年龄数据中的缺失值
print(data.Age.describe())
print("年龄的中位数是:",data.Age.median())
print("年龄的均值是:",data.Age.mean())
age_median = data.Age.median()
data.Age.fillna(age_median,inplace=True)
print(data.Age.describe())
print(data.Age)
print(data.info())
'''# 方法3:插补法,需要用到机器学习算法
# 将字符型的性别变量映射为数值变量
data.Sex = data.Sex.map({'male':1,'female':0})
data.drop(labels='Embarked',axis=1,inplace=True)
print(data)# 将数据拆分为两组,一是年龄缺失组,二是年龄非缺失组,
missing = data.loc[data.Age.isnull(),]
nomissing = data.loc[~data.Age.isnull(),]
print(missing)
print(nomissing)# 基于非缺失值构建KNN(K近邻回归)模型,再对缺失组做预测
# 提取出所有的自变量
X = nomissing.columns[nomissing.columns != 'Age']
# 构建模型,K近邻(回归)模型
knn = neighbors.KNeighborsRegressor()
# 模型拟合
knn.fit(nomissing[X], nomissing.Age)
# 年龄预测
pred_age = knn.predict(missing[X])
print(pred_age)
# missing['Age'] = pred_age
data.loc[data.Age.isnull(),'Age'] = pred_age
print(data)

四、重点讲解

1、对于缺失值的处理,归纳为三种方法:

方法一:删除法

该方法通常用来删除缺失值较多,且对最终预测结果影响不大的特征;或者删除缺失值较少的特征所对应的样本,删除少量的样本也并不会影响最终的预测结果。

方法二:替换法

该方法常常通过统计信息,利用需要填充的特征已有的数据,计算中位数、平均数、众数等,选择其一填充进所有的缺失值,缺失值填充的值一致。

方法三:插补法

该方法需要利用回归算法推断出该条样本特定特征最大可能的取值,也就是使用了最有可能的值来填充缺失值,每个缺失值不一定相同,准确性更高。

2、pandas:

  • pandas是一个强大的分析结构化数据的工具集
  • 它的使用基础是Numpy(提供高性能的矩阵运算)
  • 用于数据挖掘和数据分析,同时也提供数据清洗功能

Pandas中常见的数据结构有两种:

  • Pandas Series:

    • Pandas series 是像数组一样的一维对象,可以存储很多类型的数据。Pandas series 和 Numpy array之间的主要区别之一是你可以为Pandas series 中的每个元素分配索引标签;另一个区别是Pandas series 可以同时存储不同类型的数据。
  • Pandas DataFrame:

    • ​​​​​​​​​​​​​​Pandas DataFrame 是具有带标签的行和列的二维数据结构,可以存储多种类型的数据,类似于电子表格。

实验六:泰坦尼克生存预测之缺失值处理相关推荐

  1. kaggle房价预测特征意思_机器学习-kaggle泰坦尼克生存预测(一)-数据清洗与特征构建...

    1.背景: 1.1 关于kaggle: 谷歌旗下的 Kaggle 是一个数据建模和数据分析竞赛平台.该平台是当下最流行的数据科研赛事平台,其组织的赛事受到全球数据科学爱好者追捧. 如果学生能够在该平台 ...

  2. MOOC网深度学习应用开发1——Tensorflow基础、多元线性回归:波士顿房价预测问题Tensorflow实战、MNIST手写数字识别:分类应用入门、泰坦尼克生存预测

    Tensorflow基础 tensor基础 当数据类型不同时,程序做相加等运算会报错,可以通过隐式转换的方式避免此类报错. 单变量线性回归 监督式机器学习的基本术语 线性回归的Tensorflow实战 ...

  3. Python项目实战-Tensorflow2.0实现泰坦尼克生存预测

    目录 一.数据集下载地址 二.探索性因子分析(EDA) 三.特征工程 四.构建Dataset与Model fit和自定义estimator使用 预定义estimator的使用 一.数据集下载地址 # ...

  4. 基于逻辑回归的泰坦尼克生存预测

  5. excel根据一列内容查找排序另一列_利用泰坦尼克生存数据讲述Excel数据分析的基本操作...

    一.使用Excel做数据处理方法(博主使用的是2007版本) 打开泰坦尼克生存数据文件,文件共有12列,891行. 每一列的含义是乘客ID,生存,船舱等级,名字,性别,年龄,兄弟姐妹,父母配偶,票号, ...

  6. Kaggle实战:泰坦尼克幸存者预测 - 上

    (文章同步更新于个人博客@dai98.github.io) 源代码: Github Kaggle 泰坦尼克幸存者预测是Kaggle上数据竞赛的入门级别的比赛,我曾经在一年前作为作业参加过这个比赛,我想 ...

  7. Kaggle实战:泰坦尼克幸存者预测 -下

    (文章同步更新于个人博客@dai98.github.io) 源代码:Github 上一篇文章介绍了如何使用深度学习来预测泰坦尼克号幸存者,这一部分使用多分类器投票来做.由于数据预处理部分比较相似,重复 ...

  8. 泰坦尼克号生存预测python_用Python预测泰坦尼克生存情况-附数据集

    介绍:通过逻辑回归算法,解决kaggle网站上的泰坦尼克生存情况预测问题,准确率在80%左右. 一.提出问题 什么样的人在泰坦尼克号中更容易存活? 二.理解数据 2.1 数据来源 数据来自kaggle ...

  9. kaggle 泰坦尼克 高分 预测

    kaggle 泰坦尼克 高分 预测 目录 kaggle 泰坦尼克 高分 预测 1.前言 2.包及数据导入 3.数据的初步认识 4.数据关系的可视化 5.数据清洗与缺失值处理 6.数据的统计分析 7.超 ...

最新文章

  1. Dart Way 1
  2. 诺亚面向语音语义的深度学习研究进展
  3. C语言 找数码是否存在
  4. 解决Ubuntu系统中文乱码显示问题,终端打开文件及查看目录
  5. 家里网线的接法和顺序
  6. tab enter键出现
  7. 1285B. Just Eat It
  8. 易语言php支付宝,支付宝填表登录易语言源码
  9. Mac 删除自己安装的Python
  10. php批量下载TXT中的URL,需求是这样,再不改变目录结构的前提下,通过URL,批量下载文件,我已经写好了一点儿了...
  11. 详细解读Spark的数据分析引擎:Spark SQL
  12. Atiitt 经济学体系树与知识点概念大总结attilax
  13. 河南大学软件学院宿舍楼综合布线设计方案
  14. 双击事件(dblclick)时,不触发单击事件(click)
  15. Mstar 平台(648)唤醒之串口唤醒
  16. September 2006
  17. Inverted file index
  18. oracle用升序索引去降序查询,Oracle工作札记
  19. js 取得 Unix时间戳(Unix timestamp)
  20. js如何遍历map类型

热门文章

  1. python+0~100的奇数和
  2. 登录模块测试点提取大纲1(功能,性能,界面,兼容,安全,稳定,易用)
  3. matlab root什么意思,root是什么意思?
  4. linux机器查看物理内存,Linux系统中下查看内存的方法
  5. 厉害了,Github标星113K的前端学习路线图有中文版了
  6. 制作自定义CSDNBLOG皮肤
  7. 手机怎么把PDF转成Word?这个方法快收下
  8. ipadpro画流程图_要玩转iPad Pro?不如先下载这些APP
  9. C++ 函数重载(第三章)
  10. Fedora32 防火墙设置常用命令