机器学习实战第2天:幸存者预测任务

news2024/11/18 2:37:08

 

☁️主页 Nowl

🔥专栏《机器学习实战》 《机器学习》

📑君子坐而论道,少年起而行之 

​ 

文章目录

一.任务描述

二.数据集描述

三.主要代码

(1)主要代码库的说明与导入方法

(2)数据预处理

(3)模型训练

(4)模型预测与性能评估

(5)除数据预处理外的完整代码

四.本章总结 


一.任务描述

在泰坦尼克号灾难中,了解乘客生存状况是一个重要而挑战性的任务。这个任务的目标是通过分析乘客的各种特征,构建预测模型,以预测一个乘客在沉船事件中是否幸存。数据集提供了关于每位乘客的多个方面的信息,如性别、年龄、客舱等级等。

通过利用这些特征,机器学习算法可以学习模式,从而推断出哪些因素对于乘客生存的影响最为显著。例如,可能发现女性、儿童或者在更高等级客舱的乘客更有可能幸存。通过对模型进行训练和优化,可以得到一个能够根据新的乘客信息进行幸存预测的工具。

这个任务的重要性不仅在于还原历史事件,更在于提供了一个实际应用背景下的机器学习问题。通过探索这个问题,可以深入了解特征之间的关系、模型选择以及优化方法,从而拓展对机器学习在实际场景中应用的认识。

二.数据集描述

获取数据集: 幸存者预测训练集

以下是对数据集中的特征的描述

  1. PassengerId(乘客ID): 每个乘客的唯一标识符。
  2. Survived(生存情况): 乘客是否存活,通常是二进制值,1表示存活,0表示未存活。
  3. Pclass(客舱等级): 乘客所在的客舱等级,通常分为1、2、3等级,反映了社会经济地位。
  4. Name(姓名): 乘客的姓名。
  5. Sex(性别): 乘客的性别,可能是"male"(男性)或"female"(女性)。
  6. Age(年龄): 乘客的年龄。
  7. SibSp(同伴/兄弟姐妹的数量): 乘客在船上有多少兄弟姐妹或配偶。
  8. Parch(父母/子女的数量): 乘客在船上有多少父母或子女。
  9. Ticket(船票号码): 乘客的船票号码。
  10. Fare(票价): 乘客支付的票价。
  11. Cabin(客舱号码): 乘客所在的客舱号码。
  12. Embarked(登船港口): 乘客登船的港口,可能是"C"(Cherbourg)、"Q"(Queenstown)或"S"(Southampton)。

这些特征提供了关于每位乘客的各种信息,可以用于分析和预测乘客在泰坦尼克号上的生存情况。通过构建机器学习模型来预测某位乘客是否在沉船事件中幸存下来。

三.主要代码

为了精简说明,(2)-(4)仅为主要部分,请自行导入库

(1)主要代码库的说明与导入方法

  1. pandas (import pandas as pd):

    Pandas是一个用于数据处理和分析的强大库,提供了数据结构(如DataFrame和Series)和数据操作工具,使得在Python中进行数据清理、转换和分析变得更加方便。
  2. matplotlib.pyplot (import matplotlib.pyplot as plt):

    Matplotlib是一个用于绘制图表和可视化数据的2D绘图库。pyplot是Matplotlib的子模块,提供了类似于MATLAB的绘图接口,用于创建图表、直方图、散点图等。
  3. sklearn.model_selection (from sklearn.model_selection import train_test_split):

    train_test_split是scikit-learn中用于划分数据集为训练集和测试集的函数。它能够随机将数据划分为两个子集,是机器学习中常用的数据准备步骤之一。
  4. RandomForestClassifier (from sklearn.ensemble import RandomForestClassifier):  RandomForestClassifier是 scikit-learn 中的随机森林分类器,是一种基于集成学习的算法。它通过构建多个决策树并综合它们的预测结果来提高模型的性能和鲁棒性。随机森林广泛用于分类和回归问题。它在处理大量数据、高维特征和复杂模式时表现良好,通常被用于构建强健的预测模型。

  5. sklearn.metrics (from sklearn import metrics):

    metrics模块包含了许多用于评估模型性能的指标,例如准确性、精确度、召回率、F1分数等。这些指标可用于评估分类、回归和聚类等任务的模型性能。

(2)数据预处理

1.查看数据基本信息

注意这里的文件地址要改成你自己的,不然运行不了

# 导入文件
survive = pd.read_csv("datasets/titanic/train.csv")

# 查看数据列名称
print(survive.columns)

# 查看数据集格式
print(survive.shape)

2.通过数据集的描述,我们可以剔除一些无关的特征,例如乘客的姓名,登船的港口,船票号码,客舱号码这些看起来与是否能存活下来无关的特征

# 删除无关特征
survive = survive.drop(columns=["Name", "Ticket", "Embarked", "Cabin", "PassengersId"])

3.查看数据是否有空值

# 打印所有特征的空值数量
print(survive.isnull().sum())

# 删除含有空值的行
survive = survive.dropna()

 

可以看到Age列有177个空值,我们将这些有缺失的行删除

4.将字符特征转化为数字特征

字符数据是无法被我们的机器学习模型学习的,我们必须将它们转化为数字特征,本数据中性别只有两类,所以我们将它们变为0和1

survive["Sex"] = survive["Sex"].replace({"male": 1, "female": 0})

5.划分训练集与测试集

将数据分为训练集与测试集,测试集规模为20%,训练数据删除"Survived"列,将结果设置为"Survived"列

划分训练集与测试集
train, test = train_test_split(survive, test_size=0.2)

train_x = train.drop(columns="Survived")
train_y = train.Survived
test_x = test.drop(columns="Survived")
test_y = test.Survived

(3)模型训练

使用随机森林模型进行训练,每次抽样100给样本,每棵树最大深度设置为10

# 构建随机森林模型
model = RandomForestClassifier(n_estimators=100, max_depth=10)
model.fit(train_x, train_y)

(4)模型预测与性能评估

使用metric的准确率作为模型指标

prediction = model.predict(test_x)
print('The accuracy of the RandomForest is:', metrics.accuracy_score(prediction, test_y))

准确率大概为82%,还不错!

(5)除特征工程外的完整代码

这里是舍弃了一些寻找特征等工作的完整模型训练代码

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn import metrics


survive = pd.read_csv("datasets/titanic/train.csv")

survive = survive.drop(columns=["Name", "Ticket", "Embarked", "Cabin", "PassengerId"])

survive = survive.dropna()

survive["Sex"] = survive["Sex"].replace({"male": 1, "female": 0})


train, test = train_test_split(survive, test_size=0.2)

train_x = train.drop(columns="Survived")
train_y = train.Survived
test_x = test.drop(columns="Survived")
test_y = test.Survived


model = RandomForestClassifier(n_estimators=100, max_depth=10, random_state=42)
model.fit(train_x, train_y)
prediction = model.predict(test_x)
print('The accuracy of the RandomForest is:', metrics.accuracy_score(prediction, test_y))

四.本章总结 

  • 根据任务特点挖掘重要特征
  • 如何去除无用的特征
  • 数据中有空缺值如何处理
  • 如何将字符特征转化为数字
  • 随机森林模型的应用

当然,也可以自己处理特征,自己选择模型,调整参数,看看会不会获得更好的结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1253190.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

4面试题--数据库(mysql)

执⾏⼀条 select / update 语句,在 MySQL 中发⽣了什么? Server 层负责建⽴连接、分析和执⾏ SQL。MySQL ⼤多数的核⼼功能模块都在这实现,主要包括 连接器,查询缓存(8.0版本去除,因为每次更新将会清空该…

macos安装小软件 cmake

一,cmake下载主页 Download CMake 二,下载,解压,配置,编译,安装 0. 假设macos中已经存在了 clang和make工具 1. 通过网页下载最新的稳定版 cmake***.tar.gz 源代码 2. tar zxf cmake***.tar 3. cd cmake***…

最详细手把手教你安装 Git + TortoiseGit 及使用

软件下载 从 Git 官网 下载 Git 安装程序,点击 Download for Windows: 点击下载 64-bit Git for Windows Setup: Git for Windows Setup 为安装版本,建议选择此版本Git for Windows Portable 为绿色免安装版本 从 TortoiseGit 官网 下载 T…

Echarts 创建饼状图-入门实例

安装 npm install echartsmain.js 引入 import *as echarts from echarts Vue.prototype.$echarts echarts定义容器 <div ref"myChart" style"width: 500px; height: 500px;"></div>option 为配置项 成品 <script>export default {na…

论文阅读——MCAN(cvpr2019)

补充一下MCAN-VQA&#xff1a; 对图片的处理&#xff1a;首先输入图片到Faster R-CNN&#xff0c;会先设定一个判断是否检测到物体的阈值&#xff0c;这样动态的生成m∈[10,100]个目标&#xff0c;然后从检测到的对应的区域通过平均池化提取特征。第i个物体特征表示为&#xff…

Transformer——decoder

上一篇文章&#xff0c;我们介绍了encoder&#xff0c;这篇文章我们将要介绍decoder Transformer-encoder decoder结构&#xff1a; 如果看过上一篇文章的同学&#xff0c;肯定对decoder的结构不陌生&#xff0c;从上面框中可以明显的看出&#xff1a; 每个Decoder Block有两个…

84基于matlab的数字图像处理

基于matlab的数字图像处理&#xff0c;数据可更换自己的&#xff0c;程序已调通&#xff0c;可直接运行。 84matlab数字图像处理图像增强 (xiaohongshu.com)https://www.xiaohongshu.com/explore/656219d80000000032034dea

微机原理_4

一、单项选择题&#xff08;本大题共 15 小题&#xff0c;每小题 3 分&#xff0c;共 45 分。在每小题给出的四个备选项中&#xff0c;选出一个正确的答案&#xff0c;请将选定的答案填涂在答题纸的相应位置上。) 1在产品研制的过程中,通常采用( )类型的存储芯片来存放待调试的…

发布鸿蒙的第一个java应用

1.下载和安装华为自己的app开发软件DevEco Studio HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 2.打开IDE新建工程&#xff08;当前用的IDEA 3.1.1 Release&#xff09; 选择第一个&#xff0c;其他的默认只能用(API9)版本&#xff0c;搞了半天才发现8&#xff…

Linux加强篇006-存储结构与管理硬盘

目录 前言 1. 从“/”开始 2. 物理设备命名规则 3. 文件系统与数据资料 4. 挂载硬件设备 5. 添加硬盘设备 6. 添加交换分区 7. 磁盘容量配额 8. VDO虚拟数据优化 9. 软硬方式链接 前言 悟已往之不谏&#xff0c;知来者之可追。实迷途其未远&#xff0c;觉今是而昨非…

WPF绘图技术介绍

作者&#xff1a;令狐掌门 技术交流QQ群&#xff1a;675120140 csdn博客&#xff1a;https://mingshiqiang.blog.csdn.net/ 文章目录 WPF绘图基本用法绘制直线在XAML中绘制直线在C#代码中绘制直线使用Path绘制直线注意 矩形绘制在XAML中绘制矩形在C#代码中绘制矩形设置矩形的位…

2.1 总线问题

同一时间只能有一个去控制总线,因此需要一个输出开关去确保总线不出错 一旦同时开启输出开关,下面的锁存器还会被上面的数据修改如果上下同时开启可写,且同时开启可输出, 则短路

前端vue3——html2canvas给网站截图生成宣传海报

文章目录 ⭐前言⭐选择html2canvas实现网页截图&#x1f496; 截图 ⭐图片url截图显示不出来问题&#x1f496; 解决 ⭐最终效果&#x1f496; 定义海报 ⭐总结⭐结束 ⭐前言 大家好&#xff0c;我是yma16&#xff0c;本文分享关于 前端vue3——html2canvas给网站截图生成宣传…

什么是无监督学习

1 概况 1.1 定义 无监督学习&#xff08;Unsupervised Learning&#xff09;是机器学习的一种类型&#xff0c;它涉及从未标记的数据中发现隐藏的模式。与监督学习不同&#xff0c;无监督学习的数据没有显式的标签或已知的结果变量。其核心目的是探索数据的内在结构和关系。无…

OSG粒子系统与阴影-自定义粒子系统示例<2>(5)

自定义粒子系统示例(二) 目前自定义粒子的方法有很多&#xff0c;在OSG 中使用的是 Billboard 技术与色彩融合技术。色彩融合是一种高级的渲染技术&#xff0c;如果读者有兴趣&#xff0c;可参看 OSG 粒子系统实现的源代码。这里采用简单的布告牌技术(osg::Billboard)与动画来实…

在 STM32 上实现温度补偿和校正

本文介绍了如何在 STM32 微控制器上实现温度补偿和校正&#xff0c;以提高温度传感器的测量精度。首先&#xff0c;我们将简要介绍温度补偿和校正的原理和目的。然后&#xff0c;我们将详细讨论在 STM32 上实现温度补偿和校正的步骤和方法。同时&#xff0c;提供了一个简单的示…

K8s 中 Pod OOMKilled 原因

目录 Exit Code 137 解决方案 JVM 感知 cgroup 限制 使用 JDK9 的容器感知机制尝试 问题分析 容器内部感知 CGroup 资源限制 在 Java10 中&#xff0c;改进了容器集成 JVM 参数 MaxDirectMemorySize -XX:MaxDirectMemorySize 的默认值是什么&#xff1f; 其他获取 ma…

AI先行者第四辑:AI落地铁路的快与慢

人工智能的模型不能解决所有的问题&#xff0c;它可能只能做到80%&#xff0c;剩下10%、20%都是靠你对项目的理解&#xff0c;一点点做针对性的优化。 本篇作者顾子晨&#xff0c;中国铁道科学研究院集团有限公司基础设施检测 研究所 高级工程师&#xff5c;AICA首席AI架构师培…

[蓝桥杯训练]———高精度乘法、除法

高精度乘法、除法 一、高精度乘法⭐1.1 初步理解1.1.1 高精度的定义1.1.2 为什么会有高精度1.1.3 高精度乘法的复杂度 1.2 思想讲解1.3 代码实现1.3.1 声明1.3.2 实现高精度乘法1.3.3 整体实现1.3.4 代码测试 二、高精度除法⭐2.1 初步理解2.2 思想讲解2.3 代码实现2.3.1 声明2…

ubuntu20.04配置OpenCV的C++环境

ubuntu20.04配置OpenCV的C环境 这里以opencv-3.4.16为例 复现https://github.com/raulmur/ORB_SLAM2此项目&#xff0c;需安装opencv及其他依赖&#xff0c;可见README.md详情 1.下载opencv源代码 https://opencv.org/releases/ 2.下载OpenCV的扩展包opencv_contrib&#x…