机器学习实验三、使用决策树算法预测泰坦尼克号幸存者

  • 实验目的

1. 掌握特征工程,会进行特征提取与特征选择,会进行缺失值填充。

2. 建立决策树模型,解决实际问题。

3. 会对模型进行调试,能够绘制并保存决策树。

  • 实验环境

Python 3.7.0,Sklearn ,PyCharm

  • 实验原理

1、特征工程

特征工程、降维与超参数调优是机器学习工程应用中的三个重要问题。在优惠券核销示例中讨论过,输入模型进行训练的一般不是实例的属性,而是从实例的属性数据中提取出的特征。降维技术可以解决因为特征过多而带来的样本稀疏、计算量大等问题。

在训练时,算法参数的设置对算法效果的影响很大,设置合适算法参数的过程称为“超参数调优”。特征工程的目标是从实例的原始数据中提取出供模型训练的合适特征。特征的提取与问题的领域知识密切相关。特征工程在机器学习过程中的位置和作用如下图所示。特征提取是一种创造性的活动,没有固定的规则可循。一般来说,需要先从总体上理解数据,必要时可通过可视化来帮助理解,然后运用领域知识进行分析和联想,然后处理数据提取特征。

首先要数据预处理:

2、决策树算法

决策树,可以理解为:从训练数据中学习得出一个树状结构的模型。决策树属于判别模型,既可以做分类也可以做回归。

可分为训练阶段和分类阶段:

训练阶段:从给定的训练数据集DB,构造出一棵决策树:class=DecisionTree(DB)

分类阶段:从根开始,按照决策树的分类属性逐层往下划分,直到叶节点,获得决策结果。y= DecisionTree(x)

基尼指数:1.对于样本集D,假设有K个分类,则样本属于第k类的概率为p;,则此概率分布的基尼指数定义为:

如果样本集D按照某个属性被划分成独立的两个子集D,和Dz,其基尼指数为:

度量样本集合纯度最常用的一种指标。假定当前样本集合D中第k类样本所占的比例为p;(k = 1,2.. . , K),则D的信息嫡定义为:

信息增益率:

信息增益:

  • 实验内容

泰坦尼克号的沉没是历史上最著名的沉船之一。1912年4月15日,在首航期间,泰坦尼克号撞上一座冰山后沉没,2224名乘客和机组人员中有1502人遇难。这一耸人听闻的悲剧震撼了国际社会,并导致了更好的船舶安全条例。

沉船导致生命损失的原因之一是乘客和船员没有足够的救生艇。虽然幸存下来的运气有一些因素,但有些人比其他人更有可能生存,比如妇女,儿童和上层阶级。

在这个挑战中,我们要求你完成对什么样的人可能生存的分析。特别是,我们要求你运用机器学习的工具来预测哪些乘客幸存下来的悲剧。数据描述如下:

特征

描述

特征描述

PassengerId

序号,乘客编号

乘客ID,对结果无影响

Survival

生存,是否获救

1是存活,0是未存活

Pclass

票类别-社会地位

船舱等级,1 = Upper,2 = Middle,3= Lower

Name

乘客姓名

乘客姓名,对结果无影响

Sex

性别

male,female,女士优先,对结果有影响

Age

年龄

年龄,对结果有影响

SibSp

兄弟姐妹/配偶的数量

对结果有影响

Parch

父母/孩子的数量

对结果有影响

Ticket

票号

对结果无影响

Fare

乘客票价

和船舱等级一样,有影响

Cabin

客舱号码

对结果无影响

Embarked

登船港口,上船地点

C=Cherbourg, Q=Queenstown, S=Southampton

出发地点:S=英国南安普顿Southampton

途径地点1:C=法国 瑟堡市Cherbourg

途径地点2:Q=爱尔兰 昆士敦Queenstown

数据内容如下:

显然,这次事故中没有多少乘客幸免于难。在训练集的891名乘客中,只有342人幸存下来,只有38.4%的机组人员在空难中幸存下来。我们需要从数据中挖掘出更多的信息,看看哪些类别的乘客幸存下来,哪些没有。

数据特征分为:连续值和离散值。

  1. 离散值:性别(男,女),登船地点(S,Q,C)
  2. 连续值:年龄,船票价格

任务一、对数据集进行特征处理

1.1源代码

  1. 导入数据

  1. 获取数据类型的描述统计信息

print(data.describe())

  1. 查看数据信息:

 print(data.info())

提取行与列:

提取行列中的数据:

  1. 查看是否有缺失值:

  1. 生还情况:

print(data['Survived'].value_counts())

  1. 正则表达:

  1. 对值统计:

 print(data['NewName'].value_counts())  

  1. 替换:

  1. 求平均年龄:

 print(data.groupby('NewName')['Age'].mean())

  1. 填充缺失值:

  1. 再次查看是否有缺失值并进行填充

 print(data.Age.isnull().sum())   # 0 表示没有缺失值了。

  1. One-hot编码:

  1. 特征协方差关系图:

sns.heatmap(data.corr(), annot=True, cmap='gist_rainbow', linewidths=0.2, annot_kws={'size': 20})   

  1. 构建学习模型:测试集与训练集

 

  1. 字符串值转化为数字:

 

1.2实验结果与分析

  1. 数据集详情:

2.获取数据类型的描述统计信息:

  1. 数据详细信息:

  1. 前十行数据:

  1. 第一行第一列:

  1. 更详细数据:

  1. 缺失值:

  1. 生还情况:

  1. 运用正则表达式,对值统计:

  1. 替换后:

  1. 平均年龄:

  1. 填补过程:计算出均值:港口确实填充:
  2. 编码输出:

  1. 学习模型:

 

任务二、构建决策模型

2.1源代码

  1. 构建决策树

  1. 实现决策树的可视化

2.2实验结果与分析

决策树可视化结果:

精确的决策树信息

  • 实验总结及注意事项

实验总结:特征工程的处理方法有数据预处理、特征提取,特征选择和特征降维,最后构建响应模型;特征提取方面,我们的数值类型可直接使用,时间序列需转成单独的年月日,分类数据可用数值代替类别one-hot编码。本次试验中也可以使用常用的数据挖掘手段对乘客的获救率进行预测。创建决策树时,构建模型中需建立和测试数据集,从而进行达到评估模型的结果。

注意事项:导入数据与训练数据集与前几次实验相通,本次的data明显类型复杂许多,并且在决策树建模过程,我们也可以通过交叉验证的方法有待学习,最后,在这次问题的分析方面,也可以通过后面的学习进行数据分析,使用决策函数进行预测。

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

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

相关文章

从全栈开发到微服务架构:一次真实的Java面试实录

从全栈开发到微服务架构:一次真实的Java面试实录 面试官与应聘者介绍 面试官:李明,某互联网大厂技术负责人,擅长Java后端、微服务及云原生架构。 应聘者:张伟,28岁,硕士学历,拥有5年…

新的 Gmail 网络钓鱼攻击利用 AI 提示注入来逃避检测

网络钓鱼一直以来都是为了欺骗人们。但在这次活动中,攻击者不仅瞄准用户,还试图操纵基于人工智能的防御系统。 这是我上周记录的Gmail 网络钓鱼链的演变。那次攻击活动依赖于紧迫性和重定向,但这次引入了隐藏的 AI 提示,旨在混淆…

Restful风格设计

文章目录什么是Restful风格?RESTful API设计最佳实践1. URL设计原则2. HTTP状态码的正确使用3. 统一的响应格式实际案例:用户管理系统API总结什么是Restful风格? 我的理解是:Restful是一种基于HTTP协议的架构设计风格&#xff0c…

深入 Glide 图像变换:自定义效果、GIF处理与组合变换

在 Android 开发中,Glide 的强大不仅在于其高效的加载和缓存能力,更在于其无与伦比的可扩展性,尤其是在图像处理层面。当内置的 fitCenter() 和 circleCrop() 无法满足你的设计需求时,自定义 Transformation 便是你的终极武器。本…

数据挖掘 4.8 评估泛化能力

4.8 Estimating Generalization 4.8 评估泛化能力 评估模型的泛化能力如何合理评估模型的泛化能力指导原则 (Guidelines)存在的问题 (Issues)K-fold 交叉验证(Cross-Validation)留一交叉验证(Leave One Out CV)(LOOCV)Stratification 分层训练…

46.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--扩展功能--集成网关--网关集成日志

本篇文章,我们一起在网关中集成日志功能,我们要在网关中记录下游微服务出现的异常信息、请求信息以及响应信息。在微服务架构中,网关作为系统的入口,承担着非常重要的职责。通过在网关层面集成日志功能,我们可以更好地…

使用 FastAPI 的 WebSockets 和 Elasticsearch 来构建实时应用

作者:来自 Elastic Jeffrey Rengifo 学习如何使用 FastAPI WebSockets 和 Elasticsearch 构建实时应用程序。 更多阅读:使用 FastAPI 构建 Elasticsearch API 想要获得 Elastic 认证吗?看看下一次 Elasticsearch Engineer 培训什么时候开始&…

华为云ModelArts+Dify AI:双剑合璧使能AI应用敏捷开发

引言:AI应用开发的敏捷化转型需求 随着大语言模型(LLM)技术的迅猛发展,企业与开发者对AI应用开发的敏捷化转型需求日益凸显,亟需将大模型能力快速转化为实际业务价值。传统AI开发模式中,复杂的模型工程化、流程编排和部署维护工作往往需要专业技术团队支撑,典型痛点包括…

网络实践——Socket编程UDP

文章目录Socket编程UDPUDP接口的使用铺垫socketrecvform && sendtobind字节序转化使用(Tips)实践部分version_1echo_serverversion_2dict_serverversion_3chat_serverSocket编程UDP 在了解了相关的网络基础知识后,我们不会像学系统知识一样,先学…

GD32 波形发生器,三角波,正弦波,方波。AD9833+MCP410生成和MCU自身的DAC生成。波形,频率,振幅可以通过按键和OLED调整输出。

DIY一个简易的信号发生器驱动板,主要是三角波和正弦波,方波。主板有两个通道能输出波形,CH0由AD9833MCP410AD8051放大电路组成,理论可以生成0.1-12.5MHZ的频率信号,单电源振幅范围是1-9V。CH1由MCU外设DAC生成的信号&a…

VS2022的MFC中关联使用控制台并用printf输出调试信息

前言 MFC一般在调试的时候,可以在IDE中方便的看到调试的信息。但是,有时候运行的时候也要看调试的信息怎么办?最好如同在Console(控制台)程序中输出一般的方便,可以么?可以的。 一、设置 1.1、加…

ZKmall模块商城的推荐数据体系:从多维度采集到高效存储的实践

在电商领域,个性化推荐已成为提升用户体验与转化效率的核心手段。ZKmall 模块商城基于用户行为、商品属性与交易数据,构建了一套完整的推荐算法体系,而数据采集的全面性与存储的高效性是该体系的基础。本文将聚焦推荐算法的 “数据输入端”&a…

Qt + windows+exe+msvc打包教程

目录 1. Qt + windows+exe+msvc打包教程1 1.1. Enigma Virtual Box下载⏬1 1.2. Enigma Virtual Box安装2 1.3. Qt 打包成独立exe教程6 1.3.1. Qt项目创建6 1.3.2. Qt项目编译13 1.3.3. Qt 项目打包 windeployqt命令14 1.3.4. Qt 项目打包 Enigma Virtual Box工具18 Q…

大语言模型应用开发——利用OpenAI函数与LangChain结合从文本构建知识图谱搭建RAG应用全流程

概述 从文本等非结构化数据中提取结构化信息并非新鲜事物,但大语言模型(LLMs)为该领域带来了重大变革。以往需要机器学习专家团队策划数据集并训练自定义模型,如今只需访问LLM即可实现,显著降低了技术门槛&#xff0c…

Vue3+Spring Boot技术栈,前端提交混合表单数据(普通字段+文件字段),上传文件,后端插入数据,将文件保存到数据库

一、技术栈1、前端 Vue3 Element Plus TypeSprict2、后端 Spring Boot 3.2.12 Mybatis Plus3、模型特点3.1、表格展示列表数据3.2、行点击,弹出对话框3.3、前端使用 FormData 提交混合表单数据,包含普通字段和文件字段3.4、文件对应数据库结构类型为 …

【Qt开发】Qt的背景介绍(四)

目录 1 -> Qt Hello World 程序 1.1 -> 使用“按钮”实现 1.1.1 -> 纯代码方式实现 1.1.2 -> 可视化操作实现 1.2 -> 使用“标签”实现 1.2.1 -> 纯代码方式实现 1.2.2 -> 可视化操作实现 2 -> 项目文件解析 2.1 -> .pro文件解析 2.2 -&g…

Linux驱动开发笔记(六)——pinctrl GPIO

开发板:imx6ull mini 虚拟机:VMware17 ubuntu:ubuntu20.04 视频:第8.1讲 pinctrl和gpio子系统试验-pincrl子系统详解_哔哩哔哩_bilibili 文档:《【正点原子】I.MX6U嵌入式Linux驱动开发指南.pdf》四十五章 这一章…

SpringBoot 快速上手:从环境搭建到 HelloWorld 实战

在 Java 开发领域,Spring 框架占据着举足轻重的地位,但它复杂的配置曾让不少开发者望而却步。SpringBoot 的出现,如同为 Spring 框架装上了 “加速器”,以 “约定大于配置” 的理念简化了开发流程。本文将从环境准备、Maven 配置入…

图、最小生成树与最短路径

目录 并查集 并查集实现 图 概念 图的存储结构 邻接矩阵 邻接表 无向图 有向图 图的遍历 广度优先遍历 深度优先遍历 最小生成树 Kruskal算法(克鲁斯卡尔算法) Prim算法(普利姆算法) 最短路径 单源最短路径--Dij…

互联网电商新生态:开源AI智能名片、链动2+1模式与S2B2C商城小程序的融合赋能

摘要:本文聚焦互联网电商领域,探讨在当下直播电商蓬勃发展的背景下,开源AI智能名片、链动21模式以及S2B2C商城小程序如何相互融合,为创业者、企业和淘宝主播IP等电商参与者带来新的发展机遇。通过分析各要素的特点与优势&#xff…