作者:罗罗攀,林学的研究僧。Python中文社区专栏作者,《从零开始学Python网络爬虫》作者。《从零开始学Python数据分析:视频教学版》作者。

之前我们用过传统的机器学习算法预测过泰坦尼克号数据的生还情况,这次我们使用神经网络算法来进行建模。

数据处理

数据情况

这里的数据来源与kaggle上的数据,读者可以自行进行下载,我们通过pandas读取,首先看看数据的基本情况。

  1. import numpy as np

  2. import pandas as pd

  3. data = pd.read_csv('titanic.csv')

  4. data.head()

我们使用的字段有下面几个:

  • Survived:是否生还

  • Pclass:船舱等级

  • Sex:性别

  • Age:年龄

  • SibSp:手足和配偶在船上的数量

  • Parch:双亲和手足在船上的数量

  • Fare:费用

  • Embarked:登船港口

我们把这些字段筛选出来。

缺失值处理

首先,我们看看数据的缺失情况。

  1. data.isnull().sum()

这里有两个字段有缺失值,age我们用平均值,embarked我们用最多的值进行填充。

  1. age_mean = data['Age'].mean()

  2. data['Age'] = data['Age'].fillna(age_mean)

  3. data['Embarked'] = data['Embarked'].fillna('S')

性别和embarked
  • 性别需要换成0和1

  • embarked进行哑变量

  1. data['Sex']= data['Sex'].map({'female':0, 'male': 1}).astype(int)

  2. data = pd.get_dummies(data=data,columns=['Embarked'])

划分数据集

接着我们按0.8划分数据集。

  1. X = data.iloc[:,1:]

  2. Y = data.iloc[:,0]

  3. from sklearn.model_selection import train_test_split

  4. X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.2, random_state=33)

标准化

最后我们把数据进行标准化,这样数据我们就处理完了。

  1. from sklearn import preprocessing

  2. scale = preprocessing.MinMaxScaler()

  3. X_train = scale.fit_transform(X_train)

  4. X_test = scale.transform(X_test)

MLP建模

模型结构

模型结构为:

  • 输入层,也就是9个神经元(对应9个字段)

  • 隐藏层1,40个神经元

  • 隐藏层2,30个神经元

  • 输出层,1个神经元

建立模型
  1. from keras.models import Sequential

  2. from keras.layers import Dense,Dropout

  3. model = Sequential()

  4. model.add(Dense(units=40, input_dim=9,

  5.                kernel_initializer='uniform',

  6.                activation='relu'))

  7. model.add(Dense(units=30,

  8.                kernel_initializer='uniform',

  9.                activation='relu'))

  10. model.add(Dense(units=1,

  11.                kernel_initializer='uniform',

  12.                activation='sigmoid'))

训练模型
  1. model.compile(loss='binary_crossentropy',

  2.              optimizer='adam', metrics=['accuracy'])

  3. train_history =model.fit(x=X_train,

  4.                         y=y_train,

  5.                         validation_split=0.1,

  6.                         epochs=30,

  7.                         batch_size=30,verbose=2)

可以看出模型的精度还是比较高的。

测试
  1. scores = model.evaluate(x=X_test,

  2.                        y=y_test)

  3. scores[1]

  4. # result 0.804

这样,我们的泰坦尼克号数据预测工作就完成了。

Python中文社区作为一个去中心化的全球技术社区,以成为全球20万Python中文开发者的精神部落为愿景,目前覆盖各大主流媒体和协作平台,与阿里、腾讯、百度、微软、亚马逊、开源中国、CSDN等业界知名公司和技术社区建立了广泛的联系,拥有来自十多个国家和地区数万名登记会员,会员来自以公安部、工信部、清华大学、北京大学、北京邮电大学、中国人民银行、中科院、中金、华为、BAT、谷歌、微软等为代表的政府机关、科研单位、金融机构以及海内外知名公司,全平台近20万开发者关注。

▼ 点击下方阅读原文,免费成为社区注册会员 

泰坦尼克号数据处理与预测相关推荐

  1. Keras神经网络实现泰坦尼克号旅客生存预测

    Keras神经网络实现泰坦尼克号旅客生存预测 介绍 数据集介绍 算法 学习器 分类器 实现 数据下载与导入 预处理 建立模型 训练 可视化 评估,预测 结果 代码 介绍 参考资料: 网易云课堂的深度学 ...

  2. sklearn的随机森林实现泰坦尼克号旅客生存预测

    sklearn的随机森林实现泰坦尼克号旅客生存预测 介绍 数据集介绍 算法 学习器 分类器 实现 数据下载与导入 预处理 建立模型 评估,预测 结果 代码 介绍 参考资料: https://wenku ...

  3. gini系数 决策树_案例7:机器学习--使用决策树实现泰坦尼克号乘客生存率预测...

    一.决策树简介 1.1 什么是决策树? 决策树:是一种树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种分类结果,本质是一颗由多个判断节点组成的树. ...

  4. 1.决策树 实例:泰坦尼克号幸存者的预测

    决策树 文章目录 决策树 1.概述 1.1决策树是如何工作的 2 DecisionTreeClassififier与红酒数据集 2.1重要参数 2.1.1 criterion 2.1.2 random ...

  5. python机器学习之决策树案例——泰坦尼克号幸存者的预测

    决策树(Decision Tree)是一种非参数的有监督学习方法,它能够从一系列有特征和标签的数据中总结出决策规则,并用树状图的结构来呈现这些规则,以解决分类和回归问题.决策树算法容易理解,适用各种数 ...

  6. 泰坦尼克号乘客生存预测

    泰坦尼克号乘客获救预测 1. 案例背景 泰坦尼克号沉船事故是世界上最著名的沉船事故之一.1912年4月15日,在她的处女航期间,泰坦尼克号撞上冰山后沉没,造成2224名乘客和机组人员中超过1502人的 ...

  7. 【决策树算法】泰坦尼克号乘客生存预测

    泰坦尼克号乘客生存预测 1. 案例背景 2. 步骤分析 3. 代码实现 4. 决策树可视化 4.1 保存树的结构到dot文件 4.2 网站显示结构 5. 决策树总结 6. 小结 1. 案例背景 泰坦尼 ...

  8. 泰坦尼克号乘客生存预测(XGBoost)

    泰坦尼克号乘客生存预测(XGBoost) 1. 案例背景 2. 步骤分析 3. 代码实现 1. 案例背景 泰坦尼克号沉没是历史上最臭名昭着的沉船之一.1912年4月15日,在她的处女航中,泰坦尼克号在 ...

  9. 初勘数据处理之预测算法(随机森林random forest)附matlab源码

    初勘数据处理之预测算法(随机森林random forest)附matlab源码 集成学习方法 集成学习方法,是整合多个分类方法的预测结果,以提高分类准确率.集成学习方法先用训练数据构建一组基分类器,再 ...

最新文章

  1. mysql索引优化规则_Mysql优化选择最佳索引规则
  2. FAT32文件系统结构分析
  3. YJango的循环神经网络——实现LSTM YJango的循环神经网络——实现LSTM YJango YJango 7 个月前 介绍 描述最常用的RNN实现方式:Long-Short Term Me
  4. 2018 年 ACM-ICPC 焦作站现场赛感受
  5. opencv计算两数组的乘积_opencv矩阵运算(2)
  6. python2.7_1.13_编写一个SNTP客户端
  7. C++ 虚函数与纯虚函数
  8. 【渝粤题库】陕西师范大学209010 现代教育战略 作业 (专升本)
  9. 1.Could not load the Tomcat server configuration at /Servers/Tomcat v7.0 Server(tomcat突然用不了)...
  10. excel vba 使用mschart_VBA专题108:使用VBA操控Excel界面之在功能区中添加内置控件...
  11. python中get函数怎么用_详解python中get函数的用法(附代码)_后端开发
  12. 手机万能摄像头ip搜索工具_一款 APP,130 多种功能,让你的手机秒变万能工具箱...
  13. 小米集团招股说明书披露小米专利概况
  14. 正版饥荒服务器怎么弄,饥荒联机版本地服务器如何创建
  15. 华为电脑和手机一碰传_华为手机怎么一碰传文件到电脑教程
  16. opengl 五角星画法 源代码
  17. sql date_format用法
  18. WebService使用axis2框架发布服务与获取服务
  19. 2017最新申请苹果开发者账号,申请appstore开发者账号,申请app开发者账号,申请苹果企业公司开发者账号
  20. STM32F407ZET6的RTC闹钟二次设置笔记

热门文章

  1. c语言点亮共阴极数码管,课程设计-基于单片机的共阴极数码管显示电路.doc
  2. OpenCV可以识别文字吗?
  3. Modbus的十大问题
  4. jpress-项目升级
  5. 白杨SEO:如何用百度好看视频排名优化来做视频营销?
  6. vue中的路由对象和路由记录
  7. xp自定义桌面中ie图标消失解决办法
  8. 通过路由器高速使用校园网(sdust)
  9. OpenGL ES 简介
  10. Word2vec词向量