泰坦尼克号旅客生存预测
1. 数据集
1.1 获取
http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic3.xls
1.2 数据展示及主要字段说明
2. 数据预处理
使用 pandas 进行数据预处理
2.1 读入数据
2.2 查看数据摘要
2.3 筛选提取字段
Excel 中并不是所有的字段在建模时都需要用到,只筛选提取出需要的特征字段
,去掉 ticket、carbin 等
2.4 存在的问题及解决方案
2.5 找出有 null 值的字段
利用 isnull() 方法,进行元素级别的判断
,生成所有数据的 bool 矩阵,元素为 null 或 NA 就显示为 True
继续使用 any() 方法,可以进行列级别的判断
,只要该列有为 null 或 NA 的元素,就为 True
如果想要进一步详细的知道列中为空的元素的个数,可以通过 sum() 方法进行统计
筛选出存在缺失值的记录
2.6 填充 null 值
2.7 转换编码
文本信息转化为数字编码
查看数据
2.8 删除 name 字段
2.9 打乱数据顺序
2.10 分离特征值和标签值
survived 为标签值,其他字段为特征值
特征值
标签值
2.11 特征值标准化处理
使用 sklearn 将特征值映射到 (0, 1) 之间
标准化之前
标准化之后
2.12 完整的数据预处理函数
对以上代码进行整合,封装为函数
# sklearn.preprocessing 专门进行预处理
from sklearn import preprocessing
def prepare_data(selected_df_data):
# fillna() 方法只会填充 null 值
# age 字段填充平均值
age_mean_value = selected_df_data['age'].mean()
selected_df_data['age'] = selected_df_data['age'].fillna(age_mean_value)
# fare 字段填充平均值
fare_mean_value = selected_df_data['fare'].mean()
selected_df_data['fare'] = selected_df_data['fare'].fillna(fare_mean_value)
# embarked 字段填充 S
selected_df_data['embarked'] = selected_df_data['embarked'].fillna('S')
# sex 字段字符串转换为数字
# astype() 方法用于进行字段类型转换
selected_df_data['sex'] = selected_df_data['sex'].map({'female': 0, 'male': 1}).astype(int)
# embarked 字段字符串转换为数字
selected_df_data['embarked'] = selected_df_data['embarked'].map({'C': 0, 'Q': 1, 'S': 2}).astype(int)
# drop() 方法会返回一个新的 DataFrame
# axis=1 表示删除列
selected_df_data = selected_df_data.drop(['name'], axis=1)
# 打乱数据顺序,为后面训练做准备
# sample 抽样函数,frac 为百分比,根据 frac 的值随机抽出相应百分比的数据
shuffled_df_data = selected_df_data.sample(frac=1)
# 转换为 ndarrary 数组
ndarrary_data = shuffled_df_data.values
# 提取特征值
features = ndarrary_data[:, 1:]
# 提取标签值
label = ndarrary_data[:, 0]
# 特征值标准化
minmax_scale = preprocessing.MinMaxScaler(feature_range=(0, 1))
# features 加 norm 前缀表示已经标准化过的
norm_features = minmax_scale.fit_transform(features)
return norm_features, label
3. 模型建立及应用
3.1 划分训练集和测试集
3.2 建立多层神经网络模型
3.2.1 模型结构
添加层
3.2.2 模型设置
API 参考文档https://www.tensorflow.org/versions/r1.10/api_docs/python/tf/keras/Model
3.2.3 模型训练
train_history 共有 4 个条目,每个条目对应训练和验证期间的一个受监控指标,可以使用这些指标绘制训练损失与验证损失图表
和训练准确率与验证准确率图表
3.2.4 模型训练过程可视化
定义可视化函数
import matplotlib.pyplot as plt
# train_history 训练历史对象
# train_metric 训练度量,可选值,'acc', 'loss'
# validation_metric 验证度量,可选值,'val_acc', 'val_loss'
def 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 right')
plt.show()
查看训练准确率与验证准确率
3.2.5 模型评估
3.3 模型应用
如果对模型评估的结果比较满意,就可以进行模型应用了
3.3.1 加入预测数据
3.3.2 进行预测
3.3.3 查看预测结果
其他文章
Python 数据分析与数据可视化(一)Python 开发环境搭建与编码规范
Python 数据分析与数据可视化(二)数据类型、运算符与内置函数
Python 数据分析与数据可视化(三)列表、元组、字典、集合与字符串
Python 数据分析与数据可视化(四)文件操作
Python 数据分析与数据可视化(五)线性代数基本知识
Python 数据分析与数据可视化(六)numpy 数组和矩阵运算
Python 数据分析与数据可视化(七)pandas数据分析实战
Python 数据分析与数据可视化(八)sklearn机器学习实战
Python 数据分析与数据可视化(工具篇)课程所需扩展库安装
Python 数据分析与数据可视化(实践篇)泰坦尼克号旅客生存预测