【参考:1-01 实战 泰坦尼克号沉船人员获救案例 数据清洗_哔哩哔哩_bilibili】

【参考:Titanic - Machine Learning from Disaster | Kaggle】

分析


实战

【参考:机器学习/Kaggle/泰坦尼克号/第一版 随机森林算法实现.ipynb · myaijarvis/AI - Gitee.com】


参考:《Tensorflow和keras-深度学习人工智能实践应用》
第11、12章
GitHub:点我

部分封装函数请看文章:【keras】1. MNIST手写数据集识别(重要)_myaijarvis notebook-CSDN博客

文章:【keras】2. CIFAR-10图像识别_myaijarvis notebook-CSDN博客

数据预处理

分析数据

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
np.random.seed(10)filepath="titanic3.xls"

读取数据并查看

all_df=pd.read_excel(filepath)



以上字段中的 ticket(船票号码)、 cabin(舱位号码),我们认为与要预测的结果 survived
(是否生存)关联不大,所以我们将其忽略,只选择下列字段到 Dataframe中。

clos=['survived','name','pclass','sex','age','sibsp','parch','fare','embarked']
all_df=all_df[clos]


进一步处理

df=all_df.drop(['name'],axis=1) # 去掉name
df.isnull().sum() # 查看有哪些属性有null值

age_mean=df['age'].mean()
df['age']=df['age'].fillna(age_mean) # 给age属性中的null填充平均值fare_mean=df['fare'].mean()
df['fare']=df['fare'].fillna(fare_mean) # 给fare属性中的null填充平均值df['sex']=df['sex'].map({'female':0,'male':1}).astype(int) # 将sex属性值转换为0,1x_OneHot_df=pd.get_dummies(data=df,columns=['embarked']) # 将embarked属性值C、Q、S做一位有效编码转换


标准化

from sklearn import preprocessing
minmax_scale = preprocessing.MinMaxScaler(feature_range=(0,1)) # 设置标准化范围(0,1)
scaledFeatures=minmax_scale.fit_transform(Features) # 对所有字段进行标准化


划分数据集

msk=np.random.rand(len(all_df))<0.8train_df=all_df[msk] # 训练集
test_df=all_df[~msk] # 测试集 ~是取反符号

代码合集

有了以上的分析后可以封装一下过程

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
np.random.seed(10)def PreprocessData(raw_df):df=raw_df.drop(['name'],axis=1)age_mean=df['age'].mean()df['age']=df['age'].fillna(age_mean)fare_mead=df['fare'].mean()df['fare']=df['fare'].fillna(fare_mead)df['sex']=df['sex'].map({'female':0,'male':1}).astype(int)x_OneHot_df=pd.get_dummies(data=df,columns=['embarked'])ndarray=x_OneHot_df.valuesLabel=ndarray[:,0]Features=ndarray[:,1:]minmax_scale = preprocessing.MinMaxScaler(feature_range=(0,1))scaledFeatures=minmax_scale.fit_transform(Features)return scaledFeatures,Labelfilepath="titanic3.xls"
all_df=pd.read_excel(filepath)
clos=['survived','name','pclass','sex','age','sibsp','parch','fare','embarked']
all_df=all_df[clos]msk=np.random.rand(len(all_df))<0.8train_df=all_df[msk] # 训练集
test_df=all_df[~msk] # 测试集 ~是取反符号train_Features,train_Label=PreprocessData(train_df)
test_Features,test_Label=PreprocessData(test_df)

MLP

训练

from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers import Dense,Dropoutmodel=Sequential()
model.add(Dense(units=40 # 神经元个数 也是输出维度,input_dim=9 # 输入维度 数据预处理后只有9个特征,kernel_initializer='uniform' # 随机初始化参数w和b,activation='relu'))
model.add(Dense(units=30,kernel_initializer='uniform',activation='relu'))
model.add(Dense(units=1,kernel_initializer='uniform',activation='sigmoid'))
model.summary()

model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])train_history=model.fit(x=train_Features,y=train_Label,validation_split=0.1,epochs=30,batch_size=30,verbose=1)




评估

加入数据

Jack=pd.Series([0,'Jack',3,'male',23,1,0,5.0000,'S'])
Rose=pd.Series([1,'Rose',1,'female',20,1,0,100.0000,'S'])JR_df=pd.DataFrame([list(Jack),list(Rose)],columns=['survived','name','pclass','sex','age','sibsp','parch','fare','embarked'])all_df=pd.concat([all_df,JR_df]) # 合并

all_features,Label=PreprocessData(all_df) # 数据处理
all_probability=model.predict(all_features) # 预测

预测前10位的存活率

# 接下来,我们将 all_df(姓名与所有特征字段)与 all_probability(预测结果)整合产生pd Dataframe
pd=all_df # 复制一份
pd.insert(len(all_df.columns),'probability',all_probability)

两位主角的存活率

背后的故事

pd[(pd['survived']==0)&(pd['probability']>0.9)] # 生存概率大于0.9却没有存活


图12-4的数据中, Allison,Mis. Helen Loraine与 Allison,Mrs. Hudson J C都是 Allison家族的人,他们依照我们的模型生存概率高,可是却没有存活,到底发生了什么事呢?

真实沉船中 Allison家族的故事是, Allisonー家人共有4位成员,即爸爸(30岁)、妈妈(25岁)、一个两岁的女儿 Loraine以及一个不满一岁的婴儿 Trevor。他们全家加上一名护士( Alice Cleaver)乘坐邮轮返回加拿大蒙特利尔。
因为搭乘救生艇女士优先,原本妈妈可以带着女儿与小婴儿上救生艇,但是因为找不到婴儿 Trevor,所以坚持不愿意上救生艇,而在船上到处寻找婴儿,最后全家一起在船上沉没。
然而命运捉弄人的是,原来小婴儿 Trevor早就被护士( Alice Cleaver)带上救生艇,但是没有告知 Allison家人,导致全家人都找不到婴儿。最后 Allison全家只有不满一岁的小婴儿 Trevor存活,但是失去了所有亲人。还好后来小婴儿 Trevor回到加拿大,由他的叔叔婶婶抚养长大。

【keras】3. 泰坦尼克号数据集处理与预测相关推荐

  1. 泰坦尼克号数据集_机器学习-预测泰坦尼克号生存概率

    一.项目背景概述 泰坦尼克号沉船是历史上最有名的沉船事件之一:1912年4月15日,在她的第一次航行中,泰坦尼克号与冰山相撞后沉没.船上乘客和机组人员2224名,其中1502人死亡.这场耸人听闻的悲剧 ...

  2. 基于Keras搭建cifar10数据集训练预测Pipeline

    基于Keras搭建cifar10数据集训练预测Pipeline 钢笔先生关注 0.5412019.01.17 22:52:05字数 227阅读 500 Pipeline 本次训练模型的数据直接使用Ke ...

  3. ML之RFXGBoost:基于RF/XGBoost(均+5f-CrVa)算法对Titanic(泰坦尼克号)数据集进行二分类预测(乘客是否生还)

    ML之RF&XGBoost:基于RF/XGBoost(均+5f-CrVa)算法对Titanic(泰坦尼克号)数据集进行二分类预测(乘客是否生还) 目录 输出结果 比赛结果 设计思路 核心代码 ...

  4. ML之RFXGBoost:分别基于RF随机森林、XGBoost算法对Titanic(泰坦尼克号)数据集进行二分类预测(乘客是否生还)

    ML之RF&XGBoost:分别基于RF随机森林.XGBoost算法对Titanic(泰坦尼克号)数据集进行二分类预测(乘客是否生还) 目录 输出结果 设计思路 核心代码 输出结果 设计思路 ...

  5. ML之DT:基于DT决策树算法(交叉验证FS+for遍历最佳FS)对Titanic(泰坦尼克号)数据集进行二分类预测

    ML之DT:基于DT决策树算法(交叉验证FS+for遍历最佳FS)对Titanic(泰坦尼克号)数据集进行二分类预测 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 fs = fea ...

  6. ML之DT:基于DT决策树算法(对比是否经特征筛选FS处理)对Titanic(泰坦尼克号)数据集进行二分类预测

    ML之DT:基于DT决策树算法(对比是否经特征筛选FS处理)对Titanic(泰坦尼克号)数据集进行二分类预测 目录 输出结果 设计思路 核心代码 输出结果 初步处理后的 X_train: (984, ...

  7. EL之Bagging:kaggle比赛之利用泰坦尼克号数据集建立Bagging模型对每个人进行获救是否预测

    EL之Bagging:kaggle比赛之利用泰坦尼克号数据集建立Bagging模型对每个人进行获救是否预测 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 bagging_clf = ...

  8. ML之LoRBaggingRF:依次利用Bagging、RF算法对泰坦尼克号数据集 (Kaggle经典案例)获救人员进行二分类预测——模型融合

    ML之LoR&Bagging&RF:依次利用Bagging.RF算法对泰坦尼克号数据集 (Kaggle经典案例)获救人员进行二分类预测--模型融合 目录 输出结果 设计思路 核心代码 ...

  9. ML之LoRBaggingRF:依次利用LoR、Bagging、RF算法对泰坦尼克号数据集 (Kaggle经典案例)获救人员进行二分类预测——优化baseline模型

    ML之LoR&Bagging&RF:依次利用LoR.Bagging.RF算法对泰坦尼克号数据集 (Kaggle经典案例)获救人员进行二分类预测--优化baseline模型 目录 模型优 ...

最新文章

  1. 对一次短路故障的分析与总结
  2. java 回调(callback)函数简介.
  3. 服务器异常下电文件系统,SUN服务器Solaris异常情况下恢复操作步骤(8页)-原创力文档...
  4. C++——《算法分析与设计》实验报告——最长公共子序列问题
  5. redis 源码 ziplist.c 压缩list的实现
  6. ARM不同位数系统int字节数区别
  7. 绕过路由系统 (Bypassing the Routing System)| 高级路由特性
  8. mysql中的join问题:mysql不支持full join
  9. 从微软下载Vista Ultimate 中文旗舰版
  10. LayUI动态添加table表格
  11. 华为企业业务的数字化与绿色节能“双向突围”
  12. 让手机桌面显示计算机,被忽略的Win10新功能,让手机屏幕轻松显示在电脑屏幕上?...
  13. github配置SSH keys
  14. O2OA的流程管理详情
  15. 星环科技如何站稳脚跟?
  16. 沈航C语言上机实验题答案,2017年沈阳航空航天大学航空航天工程学部823C语言程序设计考研题库...
  17. 【Maven】---Linux搭建Nexus3.X私服
  18. 呵护眼睛,从小事做起
  19. 管理软件到底有没有前途(三)-从国家十一五信息化战略规划来看
  20. 如何免费给PDF文件添加、删除水印?

热门文章

  1. 给wordpress页面添加特色图也叫缩略图
  2. Rope --高效字符串处理数据结构
  3. Chromium插件(Plugin)机制简要介绍和学习计划
  4. 代码发芽网更新 - 多种代码高亮主题、支持CSDN Blog
  5. Tensorflow: Allocation of XXXXXX exceeds 10% of system memory 可能的原因
  6. QMessageBox技巧详解
  7. Xamarin技术文档------VS多平台开发
  8. 无锡:智慧城市发展水平全国第一
  9. js 捕获鼠标右键事件
  10. 第十四周oj项目二国家排序