实验六:泰坦尼克生存预测之缺失值处理
一、任务描述
背景故事:
泰坦尼克号(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 是具有带标签的行和列的二维数据结构,可以存储多种类型的数据,类似于电子表格。
实验六:泰坦尼克生存预测之缺失值处理相关推荐
- kaggle房价预测特征意思_机器学习-kaggle泰坦尼克生存预测(一)-数据清洗与特征构建...
1.背景: 1.1 关于kaggle: 谷歌旗下的 Kaggle 是一个数据建模和数据分析竞赛平台.该平台是当下最流行的数据科研赛事平台,其组织的赛事受到全球数据科学爱好者追捧. 如果学生能够在该平台 ...
- MOOC网深度学习应用开发1——Tensorflow基础、多元线性回归:波士顿房价预测问题Tensorflow实战、MNIST手写数字识别:分类应用入门、泰坦尼克生存预测
Tensorflow基础 tensor基础 当数据类型不同时,程序做相加等运算会报错,可以通过隐式转换的方式避免此类报错. 单变量线性回归 监督式机器学习的基本术语 线性回归的Tensorflow实战 ...
- Python项目实战-Tensorflow2.0实现泰坦尼克生存预测
目录 一.数据集下载地址 二.探索性因子分析(EDA) 三.特征工程 四.构建Dataset与Model fit和自定义estimator使用 预定义estimator的使用 一.数据集下载地址 # ...
- 基于逻辑回归的泰坦尼克生存预测
- excel根据一列内容查找排序另一列_利用泰坦尼克生存数据讲述Excel数据分析的基本操作...
一.使用Excel做数据处理方法(博主使用的是2007版本) 打开泰坦尼克生存数据文件,文件共有12列,891行. 每一列的含义是乘客ID,生存,船舱等级,名字,性别,年龄,兄弟姐妹,父母配偶,票号, ...
- Kaggle实战:泰坦尼克幸存者预测 - 上
(文章同步更新于个人博客@dai98.github.io) 源代码: Github Kaggle 泰坦尼克幸存者预测是Kaggle上数据竞赛的入门级别的比赛,我曾经在一年前作为作业参加过这个比赛,我想 ...
- Kaggle实战:泰坦尼克幸存者预测 -下
(文章同步更新于个人博客@dai98.github.io) 源代码:Github 上一篇文章介绍了如何使用深度学习来预测泰坦尼克号幸存者,这一部分使用多分类器投票来做.由于数据预处理部分比较相似,重复 ...
- 泰坦尼克号生存预测python_用Python预测泰坦尼克生存情况-附数据集
介绍:通过逻辑回归算法,解决kaggle网站上的泰坦尼克生存情况预测问题,准确率在80%左右. 一.提出问题 什么样的人在泰坦尼克号中更容易存活? 二.理解数据 2.1 数据来源 数据来自kaggle ...
- kaggle 泰坦尼克 高分 预测
kaggle 泰坦尼克 高分 预测 目录 kaggle 泰坦尼克 高分 预测 1.前言 2.包及数据导入 3.数据的初步认识 4.数据关系的可视化 5.数据清洗与缺失值处理 6.数据的统计分析 7.超 ...
最新文章
- Dart Way 1
- 诺亚面向语音语义的深度学习研究进展
- C语言 找数码是否存在
- 解决Ubuntu系统中文乱码显示问题,终端打开文件及查看目录
- 家里网线的接法和顺序
- tab enter键出现
- 1285B. Just Eat It
- 易语言php支付宝,支付宝填表登录易语言源码
- Mac 删除自己安装的Python
- php批量下载TXT中的URL,需求是这样,再不改变目录结构的前提下,通过URL,批量下载文件,我已经写好了一点儿了...
- 详细解读Spark的数据分析引擎:Spark SQL
- Atiitt 经济学体系树与知识点概念大总结attilax
- 河南大学软件学院宿舍楼综合布线设计方案
- 双击事件(dblclick)时,不触发单击事件(click)
- Mstar 平台(648)唤醒之串口唤醒
- September 2006
- Inverted file index
- oracle用升序索引去降序查询,Oracle工作札记
- js 取得 Unix时间戳(Unix timestamp)
- js如何遍历map类型
热门文章
- python+0~100的奇数和
- 登录模块测试点提取大纲1(功能,性能,界面,兼容,安全,稳定,易用)
- matlab root什么意思,root是什么意思?
- linux机器查看物理内存,Linux系统中下查看内存的方法
- 厉害了,Github标星113K的前端学习路线图有中文版了
- 制作自定义CSDNBLOG皮肤
- 手机怎么把PDF转成Word?这个方法快收下
- ipadpro画流程图_要玩转iPad Pro?不如先下载这些APP
- C++ 函数重载(第三章)
- Fedora32 防火墙设置常用命令