python--泰坦尼克号人员存活模型训练+预测

1.先到Kaggle平台下载关于泰坦尼克号的数据。

泰坦尼克号数据集:这是Kaggle上的经典数据集,用于预测乘客是否幸存。

地址:Titanic - Machine Learning from Disaster | Kaggle

  • 包含以下文件:

    • train.csv:训练集(包含标签Survived

    • test.csv:测试集(不包含标签)

    • gender_submission.csv:示例提交文件

2. 使用 Kaggle 处理泰坦尼克号数据集

2.1 创建 Kaggle Notebook
  1. 登录 Kaggle 账号(如果没有账号,先注册)。

  2. 进入 Titanic 竞赛页面。

  3. 点击 Notebooks,然后选择 New Notebook

  4. Kaggle 会自动加载数据集,你可以在右侧的 Data 选项卡中看到 train.csv 和 test.csv

3.详细实现代码+解释

import pandas as pd

# 加载训练集和测试集
train_data = pd.read_csv('kaggle_notebook/train.csv')
test_data = pd.read_csv('kaggle_notebook/test.csv')

# 查看数据
#print(train_data.head())
#print(test_data.head())

#train_data.describe()

# 填充缺失值(将文件中缺失的字段进行填充)
# fillna(): 这是一个Pandas函数,用于填充缺失值(NaN)。
# train_data['Age'].median(): 计算“Age”列的中位数(median)。中位数是数据集中间值,能够有效减少异常值的影响。
# inplace=True: 表示直接在原数据上进行修改,而不是返回一个新的DataFrame。
train_data['Age'].fillna(train_data['Age'].median(), inplace=True)
test_data['Age'].fillna(test_data['Age'].median(), inplace=True)
# train_data['Embarked'].mode()[0]: 计算“Embarked”列的众数(mode),即出现频率最高的值。
# [0]表示取众数列表中的第一个值(如果有多个众数)。
train_data['Embarked'].fillna(train_data['Embarked'].mode()[0], inplace=True)
test_data['Fare'].fillna(test_data['Fare'].median(), inplace=True)

# 提取Title特征
train_data['Title'] = train_data['Name'].str.extract(' ([A-Za-z]+)\.', expand=False)
test_data['Title'] = test_data['Name'].str.extract(' ([A-Za-z]+)\.', expand=False)

# 将类别特征转换为数值
train_data['Sex'] = train_data['Sex'].map({'male': 0, 'female': 1})
test_data['Sex'] = test_data['Sex'].map({'male': 0, 'female': 1})

# 删除不需要的特征
train_data.drop(['PassengerId', 'Name', 'Ticket', 'Cabin'], axis=1, inplace=True)
test_data.drop(['PassengerId', 'Name', 'Ticket', 'Cabin'], axis=1, inplace=True)

#查看训练数据类型
#train_data.info()
#print(train_data.describe())

#查看测试数据类型
#test_data.info()
#print(test_data.describe())

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split

from sklearn.preprocessing import LabelEncoder

# 对分类变量进行标签编码(将存储的字符串数据转化成浮点数类型)
label_encoders = {}
for column in ['Title', 'Embarked']:
    le = LabelEncoder()
    train_data[column] = le.fit_transform(train_data[column])
    label_encoders[column] = le  # 保存编码器,方便后续解码



# 定义特征和目标变量(将不包含['Survived']属性的值赋值给X)
X = train_data.drop(['Survived'], axis=1)
#将['Survived']属性的值赋值给y
y = train_data['Survived']

# 划分训练集和验证集
# X: 特征数据(自变量),通常是一个二维数组或 DataFrame,每一行是一个样本,每一列是一个特征。
# y: 标签数据(因变量),通常是一个一维数组或 Series,表示每个样本的目标值(分类或回归的目标)。
# test_size=0.2: 指定验证集的比例。这里 0.2 表示将 20% 的数据作为验证集,剩下的 80% 作为训练集。
X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42)

# 训练随机森林模型
# n_estimators=100: 指定随机森林中树的数量。这里设置为 100,表示模型将包含 100 棵决策树。
# random_state=42: 随机种子,用于确保每次运行代码时,模型的随机性是一致的(可重复性)。
model = RandomForestClassifier(n_estimators=100, random_state=42)

# X_train: 训练集的特征数据。
# y_train: 训练集的标签数据。
model.fit(X_train, y_train)

# 验证模型(hu)
accuracy = model.score(X_val, y_val)
print(f"Validation Accuracy: {accuracy:.2f}")

#对分类变量进行标签编码
test_data["Title"]=label_encoders["Title"].fit_transform(test_data["Title"])
test_data["Embarked"]=label_encoders["Embarked"].fit_transform(test_data["Embarked"])

# print(test_data)
# 预测测试集
predictions = model.predict(test_data)

# 生成提交文件
submission = pd.DataFrame({
    'PassengerId': pd.read_csv('kaggle_notebook/test.csv')['PassengerId'],
    'Survived': predictions,
    "Name":pd.read_csv('kaggle_notebook/test.csv')['Name']
})
submission.to_csv('kaggle_notebook/submission.csv', index=False)
print(submission)

4. 训练数据中的特征

在泰坦尼克号数据集中,训练数据train.csv)包含以下特征(列):

  • PassengerId:乘客的唯一标识(对预测无用,通常删除)。

  • Survived:目标变量,表示是否存活(1 表示存活,0 表示未存活)。

  • Pclass:舱位等级(1 = 头等舱,2 = 二等舱,3 = 三等舱)。

  • Name:乘客姓名(对预测无用,但可以提取称呼作为新特征)。

  • Sex:性别(male/female)。

  • Age:年龄。

  • SibSp:兄弟姐妹和配偶的数量。

  • Parch:父母和子女的数量。

  • Ticket:船票编号(对预测无用,通常删除)。

  • Fare:票价。

  • Cabin:船舱号(对预测无用,通常删除)。

  • Embarked:登船港口(C = Cherbourg, Q = Queenstown, S = Southampton)。


2. 模型使用的特征(通过这些特征来预测用户的存活)

在代码中,模型使用的特征不仅仅是性别和年龄,而是所有对预测有帮助的特征。例如:

  • 性别(Sex):转换为数值(0 表示男性,1 表示女性)。

  • 年龄(Age):直接使用。

  • 舱位等级(Pclass):直接使用。

  • 兄弟姐妹和配偶数量(SibSp):直接使用。

  • 父母和子女数量(Parch):直接使用。

  • 票价(Fare):直接使用。

  • 登船港口(Embarked):转换为数值(如 0、1、2)。

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Azure 架构师学习笔记】- Azure Databricks (12) -- Medallion Architecture简介

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (11) – UC搭建 前言 使用ADB 或者数据湖,基本上绕不开一个架构“Medallion”, 它使得数据管理更为简单有效。ADB 通过…

spring中的注解介绍

本篇文章专门用来介绍spring中的各种注解。 1、RestController 1、含义 2、举例 3、使用场景 RestController 通常用于开发 RESTful API,适合返回 JSON 或 XML 数据的场景 4、总结 RestController 是 Spring 中用于简化 RESTful Web 服务开发的注解,它结…

嵌入式开发:傅里叶变换(5):STM32和Matlab联调验证FFT

目录 1. MATLAB获取 STM32 的原始数据 2. 将数据上传到电脑 3. MATLAB 接收数据并验证 STM32进行傅里叶代码 结果分析 STM32 和 MATLAB 联调是嵌入式开发中常见的工作流程,通常目的是将 STM32 采集的数据或控制信号传输到 MATLAB 中进行实时处理、分析和可视化…

Linux设备驱动开发-SPI驱动开发详解(包含设备树处理详细过程)

基础知识及 SPI 相关结构体介绍 引脚:MISO(master 输入,slave 输出),MOSI(master 输出,slave 输入),片选引脚,SCK(时钟) 控制寄存器&…

嵌入式八股文(五)硬件电路篇

一、名词概念 1. 整流和逆变 (1)整流:整流是将交流电(AC)转变为直流电(DC)。常见的整流电路包括单向整流(二极管)、桥式整流等。 半波整流:只使用交流电的正…

C++初阶——简单实现stack和queue

目录 1、Deque(了解) 1.1 起源 1.2 结构 1.3 优缺点 1.4 应用 2、Stack 3、Queue 4、Priority_Queue 注意:stack,queue,priority_queue是容器适配器(container adaptor) ,封装一个容器,按照某种规则使用&#…

【Git】六、企业级开发模型

文章目录 Ⅰ. 前言Ⅱ. 系统开发环境Ⅲ. Git 分支设计规范master分支release分支develop分支feature分支hotfix分支 Ⅰ. 前言 ​ 我们知道,一个软件从零开始到最终交付,大概包括以下几个阶段:规划、编码、构建、测试、发布、部署和维护。 ​…

Apache SeaTunnel 构建实时数据同步管道(最新版)

文章作者 王海林 白鲸开源 数据集成引擎研发 Apache SeaTunnel Committer & PMC Member,Apache SkyWalking Committer,多年平台研发经验,目前专注于数据集成领域。 导读 在当今数字化快速发展的时代,数据已然成为企业决策…

在 Windows 上配置 Ollama 服务并开放局域网访问

为了在局域网内共享 Ollama 服务,我们需要完成以下两步: 1、设置 Ollama 的环境变量 OLLAMA_HOST,使其监听局域网的 IP 地址。 (1) 配置 Ollama 服务的监听地址 Ollama 服务使用环境变量 OLLAMA_HOST 来指定监听的地…

错误 MSB3073 命令“setlocal“

最近在搞opencv的c版本。报了这个错很头疼。 点击项目>属性 把这里命令行删掉就行。

【时时三省】(C语言基础)常量和变量

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 在计算机高级语言中,数据有两种表现形式:常量和变量。 常量 在程序运行过程中,其值不能被改变的量称为常量。数值常量就是数学中的常数。 常用的常量有以…

deep-research 专用评测数据集

Deep Research自2025年2月初由OpenAI推出后迅速引发全球关注,其通过端到端强化学习技术实现多步骤研究任务自动化,能在数十分钟内生成分析师水平报告,效率远超人类(耗时从30分钟到30天不等),被学者评价为“…

WordPress平台如何接入Deepseek,有效提升网站流量

深夜改代码到崩溃?《2024全球CMS生态报告》揭露:78%的WordPress站长因API对接复杂,错失AI内容红利。本文实测「零代码接入Deepseek」的保姆级方案,配合147SEO的智能发布系统,让你用3个步骤实现日均50篇EEAT合规内容自动…

QT零基础学习之路(六)--如何添加资源文件

源码地址(优先更新):点击此处

【愚公系列】《Python网络爬虫从入门到精通》033-DataFrame的数据排序

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…

Python入门12:面向对象的三大特征与高级特性详解

面向对象编程(OOP)是Python编程中非常重要的一部分,它通过封装、继承和多态这三大特征,帮助我们更好地组织和管理代码。除此之外,Python还提供了一些其他特性,如类属性、类方法和静态方法,进一步…

20分钟 Bash 上手指南

文章目录 bash 概念与学习目的第一个 bash 脚本bash 语法变量的使用位置参数管道符号(过滤条件)重定向符号条件测试命令条件语句case 条件分支Arrayfor 循环函数exit 关键字 bash 脚本记录历史命令查询文件分发内容 bash 概念与学习目的 bash&#xff0…

观成科技:海莲花“PerfSpyRAT”木马加密通信分析

1.概述 在2024年9月中旬至10月,东南亚APT组织“海莲花”通过GitHub发布开源安全工具项目,针对网络安全人员发起了定向攻击。通过对相关攻击活动进行分析,可以将其与一些海莲花的样本关联起来。这些样本的通信数据结构与海莲花此前使用的攻击…

Orange 开源项目 - 集成百度智能云-千帆大模型

1 集成百度智能云-千帆大模型 百度智能云-千帆ModelBuilder百度智能云千帆大模型服务与开发平台ModelBuilder(以下简称千帆ModelBuilder)是面向企业开发者的一站式大模型开发及服务运行平台。千帆ModelBuilder不仅提供了包括文心一言底层模型和第三方开源…