Python 数据分析与数据可视化(实践篇)泰坦尼克号旅客生存预测

泰坦尼克号旅客生存预测

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 数据分析与数据可视化(实践篇)泰坦尼克号旅客生存预测

  • 8
    点赞
  • 99
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
泰坦尼克号数据处理与可是一个经典的数据分析任务。下面介绍一些常用的数据处理和可技巧。 ## 数据处理 ### 数据读取 可以使用`pandas`库中的`read_csv()`方法读取CSV格式的数据文件。例如: ```python import pandas as pd # 读取train.csv文件 data = pd.read_csv('train.csv') ``` ### 数据清洗 在进行数据分析之前,通常需要对数据进行清洗,以保证数据的完整性和准确性。具体而言,数据清洗可能涉及以下内容: - 处理缺失值 - 处理异常值 - 处理重复值 - 处理不一致的数据类型 这里以处理缺失值为例进行说明。可以使用`pandas`库中的`fillna()`方法填充缺失值。例如,假设`Age`列存在缺失值,可以使用以下代码将缺失值填充为该列的平均值: ```python data['Age'].fillna(data['Age'].mean(), inplace=True) ``` ### 特征工程 特征工程是指对原始数据进行变换和处理,以提取更有用的特征。常见的特征工程技术包括: - 特征选择:选择最相关的特征 - 特征编码:将非数值型特征转换为数值型特征 - 特征缩放:对特征进行缩放,以保证不同特征之间的权重相等 这里以特征编码为例进行说明。可以使用`pandas`库中的`get_dummies()`方法将非数值型特征转换为数值型特征。例如,假设`Sex`列是一个非数值型特征,可以使用以下代码将其转换为数值型特征: ```python data = pd.get_dummies(data, columns=['Sex']) ``` ## 可数据分析中非常重要的一步,它可以帮助我们更好地理解数据并发现数据中隐藏的规律。下面介绍一些常用的可技巧。 ### 直方图 直方图可以用来表示数值型数据的分布情况。可以使用`matplotlib`库中的`hist()`方法绘制直方图。例如,假设`Age`列是一个数值型特征,可以使用以下代码绘制直方图: ```python import matplotlib.pyplot as plt plt.hist(data['Age'], bins=20) plt.xlabel('Age') plt.ylabel('Count') plt.show() ``` ### 条形图 条形图可以用来比较不同类别的数据。可以使用`matplotlib`库中的`bar()`方法绘制条形图。例如,假设`Sex`列是一个分类特征,可以使用以下代码绘制条形图: ```python sex_counts = data['Sex'].value_counts() plt.bar(sex_counts.index, sex_counts.values) plt.xlabel('Sex') plt.ylabel('Count') plt.show() ``` ### 散点图 散点图可以用来表示两个数值型特征之间的关系。可以使用`matplotlib`库中的`scatter()`方法绘制散点图。例如,假设`Age`列和`Fare`列是两个数值型特征,可以使用以下代码绘制散点图: ```python plt.scatter(data['Age'], data['Fare']) plt.xlabel('Age') plt.ylabel('Fare') plt.show() ``` 以上是一些泰坦尼克号数据处理与可的常用技巧。当然,还有很多其他的技巧可以用来处理和可数据

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值