前面对数据进行了预处理,详情可以看这个 数据预处理
接下来我们建立模型
1.建模
建立的多层感知机模型包含:输入层(9个神经元),隐含层1(40个units),隐含层2(30个units),一个输出层
导入keras模块建立线性堆叠模型,后面只需要加入各个网络层模块即可
直接贴代码:
使用Dense.add方法加入Dense神经网络,Dense的特点是,所有上一层与下层的神经元完全连接。uniform是随机初始化weight和bias,隐层激活函数为relu,输出层为sigmoid
2.训练
训练之前,需要对训练模型进行设置,定义损失函数为交叉熵Bianry Crossentropy,这个损失函数主要是用来计算预测值y与目标值t之间的sigmoid交叉熵,主要用来多分类任务中。其他的loss函数可以参考神经网络loss损失函数总结。优化器选用adam,让训练收敛更快,metrics设置模型的评估方式,是准确率
使用model.fit训练,训练过程存储在train_history 变量中,设置训练与验证数据比率0.1.
上面是部分训练结果
下面定义函数,画出准确率的图
3.评估模型准确率
使用test测试集数据评估模型
4.加入Jack和Rose的数据进行预测
Jack是3等舱,Rose是头等舱
Jack男,Rose女
Jack票价5,Rose票价100
Jack年龄23,Rose20
使用pd.Series()建立数据
使用pd.DataFrame()创建DataFrame 加入jack和rose的数据
将JR_df加入all_df 进行预测
并查看数据
由于数据是后传入进来的,所以还要进行预处理
使用model.predict()传入特征字段参数all_Features预测,并将结果返回all_probability
查看前10项数据
将all_probability数据传入all_df 进行整合,产生pd DataFrame.查看后两项数据
概率结果符合电影的结局。
5.找出数据背后的故事
通过这个模型,我们可以找到那些存活率极高但最后却没有存活下来的人,他们背后都有着不为人知的故事,放弃了生存的机会……
使用pandas查看生存率极高,但survive==0的人
……未完待续,后面将使用CNN来训练并预测该实例
刚学习深度学习这一块,希望大家多多指教~
以上代码及案例来源于TensorFlow+Keras深度学习与人工智能实践应用