当前位置: 首页 > news >正文

02-决策树-泰坦尼克号乘客生存预测

1. 需求分析

根据乘客特征预测是否幸存(二分类)

2. 数据说明

Kaggle 经典入门分类数据集,模拟 1912 年泰坦尼克沉船事件乘客信息,任务:根据乘客特征预测是否幸存(二分类)。数据来源于阿里云天池。

  • train.csv:训练集(891 条),含 Survived 标签;
  • test.csv:测试集(418 条),无存活标签;
字段含义
PassengerId乘客唯一 ID
Survived目标标签:0 = 遇难,1 = 幸存
Pclass客舱等级:1 一等、2 二等、3 三等(重要特征)
Name姓名,可提取头衔 Mr/Mrs/Miss 等衍生特征
Sex性别:male/female,强相关幸存(女士优先)
Age年龄,存在大量缺失值
SibSp同船兄弟姐妹 / 配偶数量
Parch同船父母 / 子女数量
Ticket船票编号
Fare票价
Cabin船舱号,缺失极多
Embarked登船港口:S 南安普顿、C 瑟堡、Q 皇后镇

数据特点:

  • 缺失值多:Age、Cabin、Embarked 均有空值,入门练数据清洗;
  • 类别不平衡:遇难人数多于幸存者;
  • 特征类型丰富:数值、分类、文本,适合练习特征工程;
  • 经典二分类任务:逻辑回归、决策树、随机森林、KNN 入门首选。

3. 建模

import matplotlib.pyplot as plt import pandas as pd from sklearn.model_selection import train_test_split from sklearn.tree import DecisionTreeClassifier, plot_tree from sklearn.metrics import classification_report

3.1 获取数据

data = pd.read_csv("./data/train.csv") data.info()

3.2 数据预处理

# 1. 提取特征和标签 x = data[['Pclass', 'Age', 'Sex']] y = data['Survived'] # 2. 缺失值处理 x.Age.fillna(x.Age.mean(), inplace=True) # 3. 分类数据one-hot编码 x = pd.get_dummies(x, columns=['Sex']) # 4. 划分数据集 x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=79)

3.3 特征工程

绝大多数树模型都不需要特征标准化

3.4 模型训练

# 参数解释:criterion='gini',gini指数;max_depth=10,最大深度 estimator = DecisionTreeClassifier(criterion='gini', max_depth=10) estimator.fit(x_train, y_train)

3.5 模型预测

y_pre = estimator.predict(x_test)

3.6 模型评估

print(classification_report(y_test, y_pre))

3.7 可视化

plt.figure(figsize=(30,20)) # 设置图的大小:太大容易跑不出来 # 参数解释:filled=True,填充颜色;max_depth=10,最大深度 plot_tree(estimator, filled=True, max_depth=10) plt.savefig("./data/cart.png") plt.show()
http://www.jsqmd.com/news/1165787/

相关文章:

  • SAP MTO E+M模式配置实战:策略组22与OBYC差异的3个关键步骤
  • TMC7300与PIC18F46K22的有刷直流电机控制方案
  • MCGS Pro 3.2.6 连接 S7-1200 G2 系列 PLC:5个常见通讯故障排查与解决方案
  • 江诗丹顿官方售后服务中心地址与24小时热线实地考察报告+多信源验证(2026年7月更新) - 江诗丹顿服务中心
  • 企业为何急需配备“网络安全架构师“?——工信部教考中心高级认证解读
  • DeepSeek V4双变体架构解析:混合注意力机制与百万上下文实战指南
  • Elden-Ring-Debug-Tool:艾尔登法环终极调试工具完整指南
  • AgentScope-Java:Java原生多智能体框架实战指南
  • 新手必看:AAV 肠道递送操作指南
  • Jetson Nano CSI 摄像头 OpenCV 调用排错:3 种常见 Gstreamer 管道错误与修复
  • 潍坊GEO优化服务2026推荐,精准提升本地企业引擎可见度
  • 深度相机竖直安装:Unity坐标变换与点云适配实战
  • Java面试官视角:如何展示你的项目亮点和架构思维
  • MCP协议与Unity3D集成:AI驱动游戏角色开发实战
  • 2026有线耳机选购指南:绕过参数陷阱的硬核四维决策法
  • 亲身探访重庆江诗丹顿官方售后服务中心|全新热线和维修门店详细地址(2026年7月最新) - 江诗丹顿官方服务中心
  • 深圳华德共创连接器厂家为什么靠谱?四大核心优势全方位解决采购痛点
  • 怎么一键把盘面走势保存成图片,tmgm 电脑版 MT4 截图怎么搞?
  • MyBatis-Plus 实战踩坑:updateById 不更新 null 字段的“幽灵问题“
  • TB67H480FNG与PIC32MX470F512L电机控制方案详解
  • jstack JDK 8-21 实战:5分钟定位CPU 100%线程与死锁(附排查决策树)
  • 上海CPPM费用标准怎么理解?5800元、8800元和1500元报名费用说明
  • AI数字人营销视频制作全流程:从技术选型到生产部署
  • 医疗AI智能导诊系统:从架构设计到核心代码的工程实践
  • 不是优越感,是事实:月薪四千的她,凭什么对我大呼小叫?
  • ThreadPoolTaskExecutor vs ThreadPoolTaskScheduler 完整对比
  • AI绘画模型九鸟处理旧谱图像的技术解析与实战指南
  • 6J1电子管面包板测试指南:万用表+Python脚本实现4项关键参数自动化测量
  • iOS直播APP如何接入直播美颜SDK?开发流程详解
  • 计算机毕业设计之基于Spring的机房管理系统的设计与实现