【机器学习实战1】泰坦尼克号:灾难中的机器学习(一)数据预处理

2024-03-01 12:52

本文主要是介绍【机器学习实战1】泰坦尼克号:灾难中的机器学习(一)数据预处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 🌸博主主页:@釉色清风
  • 🌸文章专栏:机器学习实战
  • 🌸今日语录:不要一直责怪过去的自己,她曾经站在雾里也很迷茫。

🌼实战项目简介

本次项目是kaggle上的一个入门比赛 :Titanic——Machine Learning from Disaster(泰坦尼克号——灾难中的机器学习),比赛选择了泰坦尼克号作为背景,并提供了样本数据以及测试数据,要求我们使用机器学习创建一个模型,预测哪些乘客在泰坦尼克号沉船中幸存下来。

🌼数据文件说明

🌻泰坦尼克号项目页面:Titanic——Machine Learning from Disaster

🌻可下载的Data页面:


可下载包括三个文件:

  • train.csv:训练数据
  • test.csv:测试数据
  • gender_submission.csv :提交结果案例

🌻数据变量说明

下载好文件,可知,每个乘客有12个属性。

  • Passengerld :乘客唯一识别ID
  • Survived:是否存活,0为否,1为是
  • Pclass :客舱等级,分为1、2、3等级,与英国的阶级分层有关
  • Name:姓名
  • Sex:性别
  • Age:年龄
  • SibSp:泰坦尼克号上的兄弟姐妹/配偶数量(与该乘客一起旅行的)
  • Parch:泰坦尼克号上的父母/孩子数量(与该乘客一起旅行的)
  • Ticket:船票号
  • Fare:船票价格
  • Cabin:客舱编号
  • Embarked:上船的港口编号(S=Southampton,英国南安普顿[启航点];C=Cherbourg,法国瑟堡市[途径点];Q=Quenstown,爱尔兰昆市[途径点])

🌼数据预处理

数据的质量直接决定模型预测的结果。所以,在进行训练模型之前,我们必须要进行数据清洗。
接下来我们使用Jupyter Notebook来进行接下来的数据描述和预处理。

🌻读入数据

首先,我们导入pandas库,它是python中进行数据分析和处理的一个库。然后我们读入我们的训练数据集。

🌾导入数据

🌾打印数据的前几行


默认是打印前五行,如下:

🌻做简单的统计分析


统计特性如下:

统计有

  • count: 这一列的数量(只要不是缺失值就被统计)
  • mean:平均值
  • std : 方差
  • min:最小值
  • 25%:下四分位数
  • 50%:中位数
  • 75%:上四分位数
  • max: 最大值

通过大致的浏览,我们可以看到,Age列含有缺失值。

🌻对[Age]列缺失值进行填充

一般对于缺失值的填充用到均值、中位数等。在这里,我们采用均值对Age列的缺失值进行填充。在填充缺失值这里我们用到了fillna函数。

🌾fillna函数

  • fillna是一个用于填充缺失值的函数,它是pandas库中的一个方法。
  • fillna函数的基本语法如下:
  • DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None)

🌾对[Age]列的缺失值采用均值填充法填充


填充完之后,我们再次describe。

如下图:

🌻将字符型转化为数值型数据


我们知道,计算机是可以处理数字的,但是无法处理字符。为了方便统计,我们将性别[Sex]和上船港口编号[Embarked]这两列列进行处理。

🌾对[Age]列进行替换


我们在这里用到DataFrame的loc属性:

  • 在Python中,loc是一个用于数据框(DataFrame)的属性,它用于选择满足特定条件的行。loc可以通过标签或布尔数组来选择行。
  • 常见的用法有:
    1. 使用标签选择行:
      df.loc[label]
      2.使用布尔数组选择行:
      df.loc[bool_array]
      3.使用标签和列选择行和列:
      df.loc[start_label:end_label, start_column:end_column]

这里我们则采用3进行替换:

🌾对[Embarked]列进行替换


替换:

然后我们进行统计新描述,发现中的数量889,存在从缺失值。

这时,我们对三个登船地点进行统计计数。发现0是最多的,即在S处登船的人最多。

所以对于缺失值,我们将用0进行填充。

这篇关于【机器学习实战1】泰坦尼克号:灾难中的机器学习(一)数据预处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/762504

相关文章

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

在Spring Boot中集成RabbitMQ的实战记录

《在SpringBoot中集成RabbitMQ的实战记录》本文介绍SpringBoot集成RabbitMQ的步骤,涵盖配置连接、消息发送与接收,并对比两种定义Exchange与队列的方式:手动声明(... 目录前言准备工作1. 安装 RabbitMQ2. 消息发送者(Producer)配置1. 创建 Spr

深度解析Spring Boot拦截器Interceptor与过滤器Filter的区别与实战指南

《深度解析SpringBoot拦截器Interceptor与过滤器Filter的区别与实战指南》本文深度解析SpringBoot中拦截器与过滤器的区别,涵盖执行顺序、依赖关系、异常处理等核心差异,并... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现

Navicat数据表的数据添加,删除及使用sql完成数据的添加过程

《Navicat数据表的数据添加,删除及使用sql完成数据的添加过程》:本文主要介绍Navicat数据表的数据添加,删除及使用sql完成数据的添加过程,具有很好的参考价值,希望对大家有所帮助,如有... 目录Navicat数据表数据添加,删除及使用sql完成数据添加选中操作的表则出现如下界面,查看左下角从左

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实