tensorflow2.0——预测泰坦尼克号旅客生存概率(Keras应用实践)
一、数据准备
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应用实践)相关推荐
- Keras神经网络实现泰坦尼克号旅客生存预测
Keras神经网络实现泰坦尼克号旅客生存预测 介绍 数据集介绍 算法 学习器 分类器 实现 数据下载与导入 预处理 建立模型 训练 可视化 评估,预测 结果 代码 介绍 参考资料: 网易云课堂的深度学 ...
- sklearn的随机森林实现泰坦尼克号旅客生存预测
sklearn的随机森林实现泰坦尼克号旅客生存预测 介绍 数据集介绍 算法 学习器 分类器 实现 数据下载与导入 预处理 建立模型 评估,预测 结果 代码 介绍 参考资料: https://wenku ...
- python数据分析/机器学习 笔记之决策树(泰坦尼克号旅客生存预测)
最近在学习用python数据分析,不可避免的接触到了机器学习的一些算法,所以在这里简单整理一些学习的笔记和心得与大家分享! 首先机器学习分为:监督学习和非监督学习,前者有参照物,后者为参照物:主要分为 ...
- Python项目实战-Tensorflow2.0实现泰坦尼克生存预测
目录 一.数据集下载地址 二.探索性因子分析(EDA) 三.特征工程 四.构建Dataset与Model fit和自定义estimator使用 预定义estimator的使用 一.数据集下载地址 # ...
- 机器学习(10)随机森林(预测泰坦尼克号旅客存活率)
目录 一.基础理论 1.集成学习方法 2.随机森林 API 二.过程 1.创建随机森林预估器 2.参数准备(网格搜索) 3.训练 模型评估结果: 总代码 一.基础理论 1.集成学习方法 集成学习通过建 ...
- 【Pytorch神经网络实战案例】07 预测泰坦尼克号上生存的乘客
1 样本处理 1.1 载入样本代码---Titanic forecast.py(第1部分) import numpy as np import torch import torch.nn as nn ...
- tensorflow2.0 预测新文本(一)
先记录一个报错 unindent does not match any outer indentation level,这里可能是缩进有的使用的空格,有的使用的是tab不一致.(改了半天,人
- 基于深度学习的泰坦尼克旅客生存预测
基于深度学习的泰坦尼克旅客生存预测 摘要:近年来,随着深度学习的迅速发展和崛起,尤其在图像分类方向取得了巨大的成就.本文实验基于Windows10系统,仿真软件用的是Anaconda下基于python ...
- Tensorflow2.0学习笔记(二)
Tensorflow2.0学习笔记(二)--Keras练习 文章目录 Tensorflow2.0学习笔记(二)--Keras练习 前言 二.使用步骤 1.实现步骤及代码 2.下载 Fashion MN ...
最新文章
- 如何有条件地向React组件添加属性?
- 编写好代码的10条戒律
- java 文件提前结束_java – org.xml.sax.SAXParseException:过早结束文件
- Python应用实战-pandas绘制图形
- tf 如何进行svd_Tensorflow快餐教程(6) - 矩阵分解
- 再见了SpringMVC!这个框架有点厉害,甚至干掉了Servlet!
- 如何使用bat批处理命令打开WSL
- Java中IO流详细整合(含案例)
- 一个好的浏览器是多么重要,强烈推荐一个好用的浏览器.........
- prefix-list前缀列表
- 用QQ群推广网站的方法
- Hadoop Yarn ResourceManager启动失败
- 单例模式(懒汉单例和饿汉单例)
- foxmail邮箱 邮件地址信息 以及邮件内容信息的导入导出
- 大数据时代:大数据处理技术及采集方法
- 大连理工大学计算机考研专业目录,2017年大连理工大学考研专业目录
- Power PC 与 zynq数据交互(基于LocalBus)
- 5种常用翻译软件测试实验
- java天气预报免费接口api_NowAPI 的天气预报接口的实现
- VS: .sln文件和.suo文件