Kaggle项目泰坦尼克号预测生存情况(上)-------数据预处理

假期闲着无聊,做了一下Kaggle练手的项目--预测泰坦尼克号乘客的存活情况。对于一些函数和算法,刚开始也是懵懵懂懂的,但通过自己查资料,还是明白了许多,我会把参考资料的网址放在需要查看的地方。

------------------------------------

我们的整个流程如下:

①数据预处理:数据清洗、可视化、标签化

②分割训练数据

③随机森林分类器及其参数调节

数据预处理:数据清洗、可视化、标签化

首先,先导入需要的模块并读取数据

#导入包,读取数据
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

data_train = pd.read_csv(r‘C:\Users\Administrator\Desktop\456\train.csv‘)
data_test = pd.read_csv(r‘C:\Users\Administrator\Desktop\456\test.csv‘)

导入成功后,我们来看看训练数集↓

↑发现有如下特征:乘客ID,存活情况,船票级别,乘客姓名,性别,年龄,船上的兄弟姐妹以及配偶的人数,船上的父母以及子女的人数,船票编号,工资,所在船舱,登船的港口

来开始进行可视化

#我们要通过绘图来观察训练数集的基本情况哦,我们先从登舱口Embarked开始,来绘制二维柱状图,不同性别在不同登舱口的生存情况
sns.barplot(x=‘Embarked‘,y=‘Survived‘,hue=‘Sex‘,data=data_train)
#可以发现,在登船的C港口,无论是男女,生存概率都比S、Q多,但相差不会太多。总体上女性生存的几率比男性高很多

#接着,我们用折线图从Pclass,也就是几等舱来观测下生存概率
sns.pointplot(x=‘Pclass‘,y=‘Survived‘,hue=‘Sex‘,data=data_train,palette={‘male‘:‘blue‘,‘female‘:‘pink‘},
             marker=[‘*‘,"o"],linestyle=[‘-‘,‘--‘])
#总的来说,可以发现,随着舱位越来越低,存活率越来越低,这就是有钱的好处吧

除了Embarked,Pclass,我还想对年龄、Cabin的首字母(与乘客所在舱口有关)、工资这三种情况与生存情况画图分析

但现在的情况是:

①年龄是连续变量,但我们可以按照我们日常生活的逻辑对年龄划区间,对年龄进行分组,再画图根据组来对乘客的Survived状况进行分析

②Cabin是一个字母+一串数字,但我们可以它们切割了,只留字母,再画图根据不同字母对乘客的Survived状况进行分析

③工资也是连续变量,同样需要分组,但我们在日常生活中,对高工资低工资什么的概念也有点模糊,不如我们把他们四分化,分为(最小值到下四分位数),(下四分位数到中位数),(中位数到上四分位数),(上四分位数到最大值)

④我觉得乘客的名字Name、船票编码Ticket、Embarked对乘客的Survived情况没起到显著的作用,所以我打算删掉哦!

因此,我们要完成以上的任务哦。也就是说,我们要把原来的data_train转化成我们需要的、可以方便我们进行数据分析的表格↓

①简化年龄,就是分组

def simplify_ages(df):
    #把缺失值补上,方便分组
    df.Age = df.Age.fillna(-0.5)

    #把Age分为不同区间,-1到0,1-5,6-12...,60以上,放到bins里,八个区间,对应的八个区间名称在group_names那
    bins = (-1, 0, 5, 12, 18, 25, 35, 60, 120)
    group_names = [‘Unknown‘, ‘Baby‘, ‘Child‘, ‘Teenager‘, ‘Student‘, ‘Young Adult‘, ‘Adult‘, ‘Senior‘]

    #开始对数据进行离散化,pandas.cut就是这个功能
    catagories = pd.cut(df.Age,bins,labels=group_names)
    df.Age = catagories
    return df

②简化Cabin,就是取字母

def simplify_cabin(df):
    df.Cabin = df.Cabin.fillna(‘N‘)
    df.Cabin = df.Cabin.apply(lambda x:x[0])
    return df

③简化工资,也就是分组

def simplify_fare(df):
    df.Fare = df.Fare.fillna(-0.5)
    bins = (-1, 0, 8, 15, 31, 1000)
    group_names = [‘Unknown‘, ‘1_quartile‘, ‘2_quartile‘, ‘3_quartile‘, ‘4_quartile‘]
    catagories = pd.cut(df.Fare,bins,labels=group_names)
    df.Fare = catagories
    return df

④删除无用信息

def simplify_drop(df):
    return df.drop([‘Name‘,‘Ticket‘,‘Embarked‘],axis=1)

⑤整合一遍,凑成新表

def transform_features(df):
    df = simplify_ages(df)
    df = simplify_cabin(df)
    df = simplify_fare(df)
    df = simplify_drop(df)
    return df

⑥执行读取新表

#必须要再读取一遍原来的表,不然会报错,不仅训练集要简化,测试集也要,两者的特征名称要一致
data_train = pd.read_csv(r‘C:\Users\Administrator\Desktop\456\train.csv‘)
data_train = transform_features(data_train)
data_test = transform_features(data_test)
data_train.head()

以上任务执行完毕,继续画图!

#好啦,我们根据新的表格来画图啦,先来话Age-Survived的图哦,以Sex分组
sns.barplot(x = ‘Age‘,y = ‘Survived‘,hue=‘Sex‘,data = data_train)

#再按Cabin-Survived画
sns.barplot(x = ‘Cabin‘,y = ‘Survived‘,hue=‘Sex‘,data = data_train)
#根据舱位,其实也可以看出一些端倪哦

#到Fare啦
sns.barplot(x = ‘Fare‘,y = ‘Survived‘,hue=‘Sex‘,data = data_train)
#果然工资越高的,存活率更高啊,不过女性都很高

  

原文地址:https://www.cnblogs.com/annebang/p/8731300.html

时间: 2024-10-09 06:52:48

Kaggle项目泰坦尼克号预测生存情况(上)-------数据预处理的相关文章

实现泰坦尼克号预测源码和分析

{ "cells": [ { "cell_type": "markdown", "source": [ "# fk\n", "\n" ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source":

机器学习第一步——用逻辑回归及随机森林实现泰坦尼克号的生存预测

1.实验背景 本次实验是Kaggle上的一个入门比赛——Titanic: Machine Learning from Disaster.比赛选择了泰坦尼克号海难作为背景,并提供了样本数据及测试数据,要求我们根据样本数据内容建立一个预测模型,对于测试数据中每个人是否获救做个预测.样本数据包括891条乘客信息及获救情况,测试数据有418条乘客信息.样本数据的样例如下: Passenger:乘客唯一识别id Survived:是否存活,0为否,1为是 Pclass:船舱等级,1.2.3等 Name:姓

Kaggle 自行车租赁预测比赛项目实现

作者:大树 更新时间:01.20 email:[email protected] 数据处理,机器学习 回主目录:2017 年学习记录和总结 .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px solid #000; } .table { border-collapse: collapse !important; } .table td, .table th { b

kaggle入门之Titanic生存预测

比赛说明 RMS泰坦尼克号沉没是历史上最臭名昭着的沉船之一.1912年4月15日,在她的处女航中,泰坦尼克号在与冰山相撞后沉没,在2224名乘客和机组人员中造成1502人死亡.这场耸人听闻的悲剧震惊了国际社会,并为船舶制定了更好的安全规定. 造成海难失事的原因之一是乘客和机组人员没有足够的救生艇.尽管幸存下沉有一些运气因素,但有些人比其他人更容易生存,例如妇女,儿童和上流社会. 在这个挑战中,我们要求您完成对哪些人可能存活的分析.特别是,我们要求您运用机器学习工具来预测哪些乘客幸免于悲剧. 目标

ACCESS(VBA)上的一个小项目 —— 2、读取ACCESS表数据到TreeView和ListView

有人问我能不能做一个程序的时候,我第一反应都说“能”. --这次在ACCESS中,借助TreeView和ListView做了一个数据联动的模型. 简析过程: 1)从网上找了一份TreeView学习教程<三小时学会树控件>,了解了TreeView的建立以及节点的使用方法: 2)把数据表中的某列按一定规则生成的数据再按一种规则解析成TreeView中的树结构(VPPS): 3)通过遍历TreeView中节点的折叠状态,通过上述一定规则生成的数据(唯一性)把数据表中的内容读取到ListView中:

Kaggle案例泰坦尼克号问题

泰坦里克号预测生还人口问题 泰坦尼克号问题背景 - 就是那个大家都熟悉的『Jack and Rose』的故事,豪华游艇倒了,大家都惊恐逃生,可是救生艇的数量有限,无法人人都有,副船长发话了lady and kid first!,所以是否获救其实并非随机,而是基于一些背景有rank先后的. - 训练和测试数据是一些乘客的个人信息以及存活状况,要尝试根据它生成合适的模型并预测其他人的存活状况. 一.数据预处理 1.初探数据 import pandas as pd #数据分析 import numpy

【干货】再上数据分页控件 ━ 更加灵活,更加实用-提供源码

再上数据分页控件-更加灵活,更加实用 关于数据分页的文章太多了,各有各的一套方案,但大多都很类似,要么使用存储过程,要么直接使用代码进行分页.各种方案分页的效率也不尽相同,我们不一定要找一个最高效的(根据实际的项目情况),找一个最合适的就OK了.下面我要谈的分页控件非常灵活,可以支持任意类型的数据库,同时可以支持存储过程或代码分页(会自动判断),也支持多表的分页,非常的方便.对于数据分页的相关文章,在我的博客中可以找到很多,下面我做一个简单的汇总,方便大家查阅. 1. 原创企业级控件库之大数据量

动手学深度学习17-kaggle竞赛实践小项目房价预测

kaggle竞赛 获取和读取数据集 数据预处理 找出所有数值型的特征,然后标准化 处理离散值特征 转化为DNArray后续训练 训练模型 k折交叉验证 预测样本,并提交结果 kaggle竞赛 本节将动手操作实践一个kaggle比赛,房价预测. 可以先将未经优化的数据的预处理,模型的设计和超参的选择,可以动手操作,观察实现的过程以及结果, 获取和读取数据集 比赛的数据分为训练数据集和测试数据集.两个数据集都包括每栋房子的特征,如阶段类型,建造年份,房顶类型,地下室状况等特征值.这些特征值有连续的数

kaggle自行车租赁预测

kaggle自行车租赁预测 1.数据 为自行车租赁系统提供的数据,提供数据为2年内华盛顿按小时记录的自行车租赁数据.数据来源: Kaggle自行车租赁预测比赛数据 字段介绍: datetime 日期(年月日时分秒) season 季节.1为春季,2为夏季,3为秋季,4为冬季 hodliday 是否为假期.1代表是,0代表不是 workingday 是否为工作日.1代表是,0代表不是. weather 天气.1天气晴朗或多云,2有雾和云/峰等,3小雪/小雨,闪电及多云.4大雨/冰雹/闪电和大雾/大