一、数据准备

1、导入相关的库

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import urllib.request
import os
%matplotlib inlineprint("Tensorflow版本是:",tf.__version__)

2、下载泰坦尼克号上旅客的数据集

data_url="http://biostat.mc.vanderbilt.edu/wili/pub/Main/DataSets/titanic3.xls"data_file_path="E:/titanic3.xls"if  not os.path.isfile(data_file_path):result=urllib.request.urlretrieve(data_url,data_file_path)print('downloaded;',result)
else:print(data_file_path,'data file already eists.')

3、使用Pandas读取处理数据

import numpy
import pandas as pd# 读取数据文件,结果为DataFrame格式
df_data = pd.read_excel(data_file_path)

4、筛选提取需要的特征字段

# 筛选提取字段
selected_cols=['survived','name','pclass','sex','age','sibsp','parch','fare','embarked']
selected_df_data=df_data[selected_cols]

5、定义数据预处理函数

把前面数据预处理的命令全部封装到prepare_data函数中,方便后面调用

from sklearn import preprocessing
def prepare_data(df_data):df = df_data.drop(['name'],axis=1) # 删除姓名列age_mean = df['age'].mean()df['age'] = df['age'].fillna(age_mean) # 为缺失age记录填充值fare_mean = df['fare'].mean()df['fare'] = df['fare'].fillna(fare_mean) # 为缺失fare记录填充值df['sex'] = df['sex'].map({'female':0,'male':1}).astype(int) # 把sex值由字符串转换为数值df['embarked'] = df['embarked'].fillna('S') # 为缺失embarked记录填充值df['embarked'] = df['embarked'].map({'C':0,'Q':1,'S':2}).astype(int) # 把embarked值由字符串转换为数值ndarray_data = df.values # 转换为ndarray数组features = ndarray_data[:,1:] # 后7列是特征值label = ndarray_data[:,0] # 第0列是标签值# 特征值标准化minmax_scale = preprocessing.MinMaxScaler(feature_range=(0,1))norm_features = minmax_scale.fit_transform(features)return norm_features,label

6、得到处理后的数据集

x_data,y_data=prepare_data(selected_df_data)

7、划分训练集和测试集

train_size = int(len(x_data)*0.8)
x_train = x_data[:train_size]
y_train = y_data[:train_size]
x_test = x_data[train_size:]
y_test = y_data[train_size:]

转变为Dataset

train_dataset=tf.data.Dataset.from_tensor_slices((x_train,y_train))
valid_dataset=tf.data.Dataset.from_tensor_slices((x_test,y_test))

二、建立模型结构

model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Dense(units=64,input_dim=7,use_bias=True,kernel_initializer='uniform',bias_initializer='zeros',activation='relu'))
model.add(tf.keras.layers.Dense(units=32,activation='sigmoid'))
model.add(tf.keras.layers.Dense(units=1,activation='sigmoid'))

三、模型设置

model.summary()
model.compile(optimizer=tf.keras.optimizers.Adam(0.003),loss='binary_crossentropy',metrics=['accuracy'])
• optimizer可以是优化器的名字,如'adam',也可以是优化器的实例
• loss是损失函数名
⁻ 用sigmoid作为激活函数,一般损失函数选用binary_crossentropy
⁻ 用softmax作为激活函数,一般损失函数选用categorical_crossentropy
• metrics 模型要训练和评估的度量值

四、模型训练

train_dataset=train_dataset.shuffle(buffer_size=10000)
train_dataset=train_dataset.batch(40)
train_history = model.fit(train_dataset,epochs=100,validation_data=train_dataset,     # 验证集所占比例verbose=2)
train_history.history
train_history.history.keys()
model.fit() 返回一个 History 对象,该对象包含一个字典,其中包括训练期间发生的所有情况

shuffle,打乱数据顺序,为后面训练做准备 

训练过程可视化

import matplotlib.pyplot as plt
%matplotlib inlinedef visu_train_history(train_history,train_metric,validation_metric):plt.plot(train_history.history[train_metric])plt.plot(train_history.history[validation_metric])plt.title('Train History')plt.ylabel(train_metric)plt.xlabel('epoch')plt.legend(['train','validation'],loc='upper left')plt.show()
visu_train_history(train_history,'accuracy','val_accuracy')
visu_train_history(train_history, 'loss', 'val_loss')

五、模型评估

result = model.evaluate(x=x_test,y=y_test,verbose=2)
model.metrics_names

model.metrics_names: 评估结果返回值的标签

六、模型应用

1、加入Jack & Rose的数据

Jack_info = [0,'Jack',3,'male',23,1,0,5.0000,'S']
Rose_info = [1,'Rose',1,'female',20,1,0,100.0000,'S']

2、创建新的旅客DataFrame

new_passenger_pd=pd.DataFrame([Jack_info,Rose_info],columns=selected_cols)

3、在老的DataFrame中加入新的旅客信息

# 在老的DataFrame中加入新的旅客信息
all_passenger_pd=selected_df_data.append(new_passenger_pd)

七、应用模型进行预测

1、数据准备

# 数据准备
x_features, y_label=prepare_data(all_passenger_pd)

2、计算旅客生存概率

# 利用模型计算旅客生存概率
surv_probability=model.predict(x_features)
surv_probability[:5]v

八、查看预测结果

all_passenger_pd.insert(len(all_passenger_pd.columns),'surv_probability',surv_probability)all_passenger_pd[-5:]

九、应用模型进行探索

找出模型预测生存概率大于90%但实际没有存活下来的旅客信息

all_passenger_pd[(all_passenger_pd['survived']==0)&(all_passenger_pd['surv_probability']>0.9)]

Allison一家的故事

上面前2条信息中的2人是一家人,其实Allison一家4口人都在泰坦尼克号上,对应数据 集的行号是1~4号

all_passenger_pd[1:5]

tensorflow2.0——预测泰坦尼克号旅客生存概率(Keras应用实践)相关推荐

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

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

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

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

  3. python数据分析/机器学习 笔记之决策树(泰坦尼克号旅客生存预测)

    最近在学习用python数据分析,不可避免的接触到了机器学习的一些算法,所以在这里简单整理一些学习的笔记和心得与大家分享! 首先机器学习分为:监督学习和非监督学习,前者有参照物,后者为参照物:主要分为 ...

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

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

  5. 机器学习(10)随机森林(预测泰坦尼克号旅客存活率)

    目录 一.基础理论 1.集成学习方法 2.随机森林 API 二.过程 1.创建随机森林预估器 2.参数准备(网格搜索) 3.训练 模型评估结果: 总代码 一.基础理论 1.集成学习方法 集成学习通过建 ...

  6. 【Pytorch神经网络实战案例】07 预测泰坦尼克号上生存的乘客

    1 样本处理 1.1 载入样本代码---Titanic forecast.py(第1部分) import numpy as np import torch import torch.nn as nn ...

  7. tensorflow2.0 预测新文本(一)

    先记录一个报错 unindent does not match any outer indentation level,这里可能是缩进有的使用的空格,有的使用的是tab不一致.(改了半天,人

  8. 基于深度学习的泰坦尼克旅客生存预测

    基于深度学习的泰坦尼克旅客生存预测 摘要:近年来,随着深度学习的迅速发展和崛起,尤其在图像分类方向取得了巨大的成就.本文实验基于Windows10系统,仿真软件用的是Anaconda下基于python ...

  9. Tensorflow2.0学习笔记(二)

    Tensorflow2.0学习笔记(二)--Keras练习 文章目录 Tensorflow2.0学习笔记(二)--Keras练习 前言 二.使用步骤 1.实现步骤及代码 2.下载 Fashion MN ...

最新文章

  1. 如何有条件地向React组件添加属性?
  2. 编写好代码的10条戒律
  3. java 文件提前结束_java – org.xml.sax.SAXParseException:过早结束文件
  4. Python应用实战-pandas绘制图形
  5. tf 如何进行svd_Tensorflow快餐教程(6) - 矩阵分解
  6. 再见了SpringMVC!这个框架有点厉害,甚至干掉了Servlet!
  7. 如何使用bat批处理命令打开WSL
  8. Java中IO流详细整合(含案例)
  9. 一个好的浏览器是多么重要,强烈推荐一个好用的浏览器.........
  10. prefix-list前缀列表
  11. 用QQ群推广网站的方法
  12. Hadoop Yarn ResourceManager启动失败
  13. 单例模式(懒汉单例和饿汉单例)
  14. foxmail邮箱 邮件地址信息 以及邮件内容信息的导入导出
  15. 大数据时代:大数据处理技术及采集方法
  16. 大连理工大学计算机考研专业目录,2017年大连理工大学考研专业目录
  17. Power PC 与 zynq数据交互(基于LocalBus)
  18. 5种常用翻译软件测试实验
  19. java天气预报免费接口api_NowAPI 的天气预报接口的实现
  20. VS: .sln文件和.suo文件

热门文章

  1. 分布、描述性统计和贡献度分析
  2. python输入hello*3_Python快速上手: hello world
  3. 2017 主流手机分辨率与尺寸
  4. 电子设计常识——阻抗
  5. photoshop CC制作gif动图
  6. Apache修改服务器监听端口,练习 - 04 - 配置 Apache 服务器的监听端口
  7. 云原生周刊 | 美国国防部发布零信任战略与路线图
  8. windows环境下将yolo-fatest的caffe模型转化为wk模型
  9. 机房服务器安装操作系统
  10. (原创)通过DrawingCache截取View图片