首页 > 其他分享 >泰坦尼克号 - 从灾难中学习机器学习/Titanic - Machine Learning from Disaster(kaggle竞赛)第七集(随机森林模型预测和填充缺失的年龄数据)

泰坦尼克号 - 从灾难中学习机器学习/Titanic - Machine Learning from Disaster(kaggle竞赛)第七集(随机森林模型预测和填充缺失的年龄数据)

时间:2024-08-31 12:56:39浏览次数:5  
标签:Machine ageUnKnown Disaster Age 缺失 第七集 full 模型 ageKnown

此次目的:
hello大家好,俺是没事爱瞎捣鼓又分享欲爆棚的叶同学!!!准备出几期博客来记录我学习kaggle数据科学入门竞赛的过程,顺便也将其中所学习到的知识分享出来。(所学主要的内容来自与b站大学恩师“编程教学-Python“的教学视频内容)

哎!前几天,俺还在享受快乐生活嘞,几天就到学校了!痛苦哎!而且第一次搬出来住,目前感觉良好,昨天回了趟宿舍,聚了个餐,带室友来俺出租屋逛了逛。说实话还行,没有暑假担心的那种孤独,可能是有自己的事情做(比如给你们分享博客哈哈哈哈),感受不到孤独吧哈哈哈哈哈!目前感觉还行,不过还没见到合租室友,中午和他们见见面吧!好了现在我们转入正题哈!

好了在数据科学和机器学习中,处理缺失值是一个常见且重要的步骤。在这篇博客中,我将带大家一步步了解如何通过使用 随机森林回归模型 来预测并填充缺失的 Age 数据。

如果有兄弟还不是很了解随机森林的话可以去看看下面这一篇博客哈!

决策树和随机森林介绍

1. 查看数据的概况

首先,使用 full.info() 查看数据集的概况,以确认哪些列存在缺失值。

full.info()

通过 full['Age'].notnull() 可以筛选出 Age 列中非空的行,并使用 corr() 函数计算数据集中各个特征之间的相关性系数:(绝对值大的说明影响大,相关性就越强)

#查看相关性系数corr()
#绝对值大的说明影响大
full[full['Age'].notnull()].corr()

2. 筛选与 Age 相关的特征

在填充缺失值之前,首先要挑选出可能与 Age 相关的特征。这些特征包括 Parch(父母/子女数量)、Pclass(舱位等级)、SibSp(兄弟姐妹/配偶数量)、familyNum(家庭成员数)、TickCom(票号信息)以及 Title(头衔)。

#筛选数据集
agePre = full[['Age', 'Parch', 'Pclass', 'SibSp', 'familyNum', 'TickCom', 'Title']]

由于某些特征可能是分类数据(如 PclassTitle),我们需要对它们进行 One-Hot 编码,将这些分类特征转换为数值特征。

这里的One-Hot编码如果有不了解的可以参考这篇文章哈!

什么是 One-Hot 编码?

agePre = pd.get_dummies(agePre)

完成编码后,可以通过相关性矩阵来看哪些特征与 Age 的相关性较高:

ageCorrDf = agePre.corr()
ageCorrDf['Age'].sort_values()

agePre.head()

4. 构建模型的数据集准备

接下来,我们将数据集拆分为两个部分:

  • ageKnown:包含 Age 值的记录,用于训练模型。
  • ageUnKnownAge 值缺失的记录,用于后续的预测。
#建模
#拆分实验集和预测集
ageKnown = agePre[agePre['Age'].notnull()]
ageUnKnown = agePre[agePre['Age'].isnull()]

ageKnown 中分离出特征和标签:

#生成实验数据的特征和标签
ageKnown_X = ageKnown.drop(['Age'], axis=1)
ageKnown_y = ageKnown['Age']

同样,从 ageUnKnown 中分离出特征:

#生成预测数据特征
ageUnKnown_X = ageUnKnown.drop(['Age'], axis=1)

这行代码的目的是从 ageUnKnown 数据集中移除 Age 列,以便创建一个只包含特征(即独立变量)的数据集 ageUnKnown_X,用于后续的预测。 

5. 构建和训练随机森林模型

使用 随机森林回归模型 来预测缺失的年龄值:

#利用随机森林构建模型
from sklearn.ensemble import RandomForestRegressor
rfr = RandomForestRegressor(random_state=None, n_estimators=500, n_jobs=-1)
rfr.fit(ageKnown_X, ageKnown_y)

  

1.导入 RandomForestRegressor 

2. 初始化 RandomForestRegressor 模型

rfr = RandomForestRegressor(random_state=None, n_estimators=500, n_jobs=-1)

在这一行代码中,我们初始化了一个随机森林回归模型:

  • random_state=None: 如果你希望结果是可重复的(即每次运行代码时结果相同),可以设置一个整数值作为随机种子。如果为 None,则每次运行代码可能会得到不同的结果,因为模型的随机性未被固定。

  • n_estimators=500: 这是构建的决策树的数量。在这里我们选择了 500 棵树。更多的树通常可以提高模型的准确性,但也会增加计算成本。

  • n_jobs=-1: 这是模型训练时使用的并行处理器数量。设置为 -1 时,模型将使用所有可用的处理器核心,以加速训练过程。

3. 训练模型

rfr.fit(ageKnown_X, ageKnown_y)

这行代码是模型训练的核心部分:

  • ageKnown_X: 这是输入特征集,即所有与 Age 相关的特征,已经移除了 Age 列。
  • ageKnown_y: 这是标签集,即 Age 列的数据。

fit 函数会让随机森林回归模型在 ageKnown_XageKnown_y 上进行训练。模型将学习特征与年龄之间的关系,以便在之后预测缺失的 Age 值。

6. 预测和填充缺失值

首先,检查模型的得分:

#预测
#模型得分
score = rfr.score(ageKnown_X, ageKnown_y)
print('模型预测年龄得分是:', score)

然后,使用训练好的模型预测 Age 缺失的记录:

#预测年龄
ageUnKnown_predict = rfr.predict(ageUnKnown_X)

最后,将预测的年龄值填充回原始数据集中缺失的位置:

#填充预测数据
full.loc[full['Age'].isnull(), ['Age']] = ageUnKnown_predict
full.info()  # 此时已无缺失值

 

总结

通过上述步骤,我们就可以成功使用随机森林回归模型预测并填充了数据集中缺失的年龄值啦。这不仅提高了数据集的完整性,也为后续的分析和建模打下了坚实的基础。加油!!!

彩蛋

昨天回学校,晚上出去聚餐,咱准备吃顿好的,结果采用了随缘吃法(不做计划,到地方再选店),结果很多店都爆满,没地方吃了,这是随机生成了一个点子哥,点子哥来自陕西,他说:“哎!我知道一家味道挺正宗的陕西小吃馆”。然后大餐就变成了眼前的(油泼面哈哈哈哈哈),不过味道确实不错(10元+1元加面)分量很足,然后拌开之后味道酸辣的,面也很筋道,还不错。然后另一张是今早拍的俺的新窝,怎么样,湖景放加飘窗哎,感觉还不错嘞!

标签:Machine,ageUnKnown,Disaster,Age,缺失,第七集,full,模型,ageKnown
From: https://blog.csdn.net/Traveller_man/article/details/141739111

相关文章

  • 2024年图像处理、机器学习与模式识别国际学术会议(IPMLP 2024)2024 International Conf
    文章目录一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题六、咨询一、会议详情二、重要信息大会官网:https://ais.cn/u/vEbMBz提交检索:EICompendex、IEEEXplore、Scopus会议时间:2024.9.13-15日会议地点:中国广州最终截稿时间:2024年9月9日23时59分......
  • JVM(Java Virtual Machine,Java虚拟机)
    JVM(JavaVirtualMachine,Java虚拟机)是Java平台的核心组成部分,它负责运行Java程序。JVM使得Java程序能够“一次编写,到处运行”(WriteOnce,RunAnywhere),这是Java语言的一个重要特性。JVM通过在不同的操作系统上提供统一的运行时环境来实现这一特性。JVM的主要组成部分JVM主......
  • 【Java】IDEA从零到一使用statemachine状态机模拟订单 (图解)
    Java系列文章目录补充内容Windows通过SSH连接Linux第一章Linux基本命令的学习与Linux历史文章目录Java系列文章目录一、前言二、学习内容:三、问题描述四、解决方案:4.1认识依赖4.2使用状态机4.2.1目录结构4.2.2状态机解析4.2.2.1概念4.2.2.2图解4.2.2.3拓展......
  • CF830E Perpetual Motion Machine
    一堆CornnerCase的大分讨,我们全队一边写一边补情况,WA了五发终于干过去了首先当图中存在某个环时,我们只要给环上的所有点赋值为\(1\)即可;又因为图连通所以只要考虑树的情况即可考虑如果存在一个度数\(\ge4\)的点,将其赋值为\(2\)并将其周围的四个点赋值为\(1\)即可......
  • 《DNK210使用指南 -CanMV版 V1.0》第十九章 machine.PWM类实验
    第十九章machine.PWM类实验1)实验平台:正点原子DNK210开发板2)章节摘自【正点原子】DNK210使用指南-CanMV版V1.03)购买链接:https://detail.tmall.com/item.htm?&id=7828013987504)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/k210/ATK-DNK210.html5)正......
  • SciTech-BigDataAIML-Machine Learning Tutorials
    MachineLearningTutorialsMachineLearningTutorialsThispagelistsallofthemachinelearningtutorialsavailableonStatology.IntroductiontoMachineLearningSupervisedvs.UnsupervisedLearningRegressionvs.ClassificationAlgorithmsTheBias-Var......
  • 论文笔记:GeoShapley: A Game Theory Approach toMeasuring Spatial Effects in Machin
    (GeoShapley:机器学习模型中测量空间效应的博弈论方法)话题点:geoshapley、XAI、空间效应、非线性一、引言机器学习和人工智能(AI)越来越多地用于模拟地理空间现象,在各个领域都有很好的表现。可解释人工智能(XAI)领域的最新进展为解释黑箱机器学习提供了一种解决方案。排列特征......
  • JVM(Java Virtual Machine)性能调优
    JVM(JavaVirtualMachine)性能调优是优化Java应用程序性能的关键步骤,涉及多个方面的考虑和调整。以下是一个详尽的JVM性能调优指南,涵盖了主要的技术点、调优策略和具体步骤。一、JVM性能调优概述JVM性能调优的主要目标是提高Java应用程序的响应速度、吞吐量和稳定性,同时减......
  • CF641E Little Artem and Time Machine 题解
    题目传送门前置知识CDQ分治解法单点修改区间查询,但值域巨大,考虑离散化掉\(x\)。时刻\(t\)仍很大,考虑将其作为CDQ分治的第一维,然后套个CDQ分治即可,注意及时清空桶数组。代码CodeForces275382150#include<bits/stdc++.h>usingnamespacestd;#definelllonglon......
  • 《DNK210使用指南 -CanMV版 V1.0》第十八章 machine.Timer类实验
    第十八章machine.Timer类实验1)实验平台:正点原子DNK210开发板2)章节摘自【正点原子】DNK210使用指南-CanMV版V1.03)购买链接:https://detail.tmall.com/item.htm?&id=7828013987504)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/k210/ATK-DNK210.html5......