python快速入门第二周

文章目录

https://www.kaggle.com/code/alexisbcook/titanic-tutorial

kaggle

拿到数据 → 理解数据 → 清洗数据 → 分析规律 → 选择特征 → 准备模型

第2周的重点不是训练复杂模型,而是让学生理解:

一个机器学习项目开始之前,80%的工作是在处理和理解数据。


第2周:从数据到模型

案例:Titanic 生存预测

一、案例背景

1912年泰坦尼克号沉船事故。

目标:

根据乘客信息,预测:

一个乘客是否能够生存。

这是一个典型的:

监督学习 → 二分类问题


二、认识数据

数据表:

Titanic.csv

每一行:

代表一个乘客

每一列:

代表一个特征

例如:

字段 含义 类型
PassengerId 乘客编号 编号
Survived 是否生存 标签
Pclass 船票等级 类别
Name 姓名 文本
Sex 性别 类别
Age 年龄 数值
SibSp 兄弟姐妹数量 数值
Parch 父母子女数量 数值
Ticket 船票编号 文本
Fare 票价 数值
Cabin 船舱号 文本
Embarked 登船港口 类别

三、明确机器学习问题

1. 什么是样本?

一名乘客:

例如:

复制代码
乘客1:

年龄:22
性别:女
船票等级:1等
票价:71.2

结果:
生存

这就是一个样本。


2. 什么是特征?

模型输入的信息。

例如:

输入:

复制代码
年龄
性别
票价
船票等级

这些叫:

Feature(特征)


3. 什么是标签?

模型要预测的答案。

这里:

复制代码
Survived

取值:

复制代码
0 = 死亡

1 = 生存

最终:

机器学习任务:

复制代码
特征X:

年龄
性别
等级
票价
家庭人数


↓

模型


↓

标签Y:

是否生存

四、数据读取与观察

学习工具:

Python:

  • pandas
  • numpy

代码:

python 复制代码
import pandas as pd

data = pd.read_csv("titanic.csv")

data.head()

查看前5行:

目的:

了解数据长什么样。


查看数据规模:

python 复制代码
data.shape

例如:

结果:

复制代码
891行
12列

含义:

891个乘客样本。


查看字段:

python 复制代码
data.info()

发现:

问题:

  • Age有缺失
  • Cabin大量缺失
  • Embarked少量缺失

引出:

数据清洗的重要性


五、数据探索分析(EDA)

目标:

回答几个问题:

什么因素影响生存?


分析1:整体生存比例

查看:

python 复制代码
data["Survived"].value_counts()

例如:

结果:

复制代码
死亡:549

生存:342

计算比例:

发现:

大约38%的乘客生存。

学习:

类别分布。


分析2:性别是否影响生存?

问题:

男性和女性生存率是否不同?

代码:

python 复制代码
data.groupby("Sex")["Survived"].mean()

结果类似:

性别 生存率
female 74%
male 19%

发现:

性别可能是重要特征。

引出:

特征选择思想


分析3:船票等级影响

分析:

python 复制代码
data.groupby("Pclass")["Survived"].mean()

结果:

等级 生存率
1等 较高
2等 中等
3等 较低

发现:

社会经济水平可能影响生存。


分析4:年龄分析

查看:

python 复制代码
data["Age"].describe()

发现:

年龄存在:

  • 最大值
  • 最小值
  • 平均值

绘制:

年龄分布。

学习:

数据分布。


分析5:家庭因素

创建家庭人数:

公式:

复制代码
FamilySize

=
SibSp

+

Parch

+

1

例如:

一个人:

复制代码
0+0+1=1

一家五口:

复制代码
2+2+1=5

分析:

家庭人数是否影响生存。


六、数据清洗

真实数据不能直接训练。

需要处理:


1.缺失值处理

查看:

python 复制代码
data.isnull().sum()

发现:

Age:

缺失

处理:

填充平均年龄:

python 复制代码
data["Age"].fillna(
data["Age"].mean()
)

2.类别数据转换

机器不能理解:

复制代码
male
female

转换:

复制代码
male=0

female=1

方法:

Label Encoding


3.删除无用字段

例如:

PassengerId

原因:

只是编号,没有预测意义。

删除:

python 复制代码
drop()

七、特征工程

这是机器学习重要思想。

原始数据:

复制代码
SibSp
Parch

创造新特征:

复制代码
FamilySize

例如:

新增:

特征 意义
FamilySize 家庭规模
IsAlone 是否独自旅行
Title 姓名中的称谓

八、选择训练特征

最终选择:

输入X:

复制代码
Pclass

Sex

Age

Fare

FamilySize

Embarked

标签Y:

复制代码
Survived

形成:

复制代码
X:
乘客信息


↓

模型


↓

Y:
是否生存

九、划分训练集和测试集

为什么?

不能用训练数据评价自己。

划分:

例如:

80%

训练模型

20%

测试模型

代码:

python 复制代码
from sklearn.model_selection import train_test_split


X_train,X_test,y_train,y_test=

train_test_split(
X,
y,
test_size=0.2
)

理解:

训练集:

学习规律

测试集:

检查是否真的学会。


十、本周实践任务

实验:

完成Titanic数据分析报告。

学生提交:

1.数据理解

回答:

  • 有多少乘客?
  • 有哪些字段?
  • 哪些字段缺失?

2.数据分析

完成:

  • 男女生存率比较
  • 船票等级比较
  • 年龄分布分析
  • 家庭人数分析

3.数据处理

完成:

  • 缺失值处理
  • 类别转换
  • 特征选择

4.准备模型数据

输出:

复制代码
X_train

X_test

y_train

y_test

为第3周:

线性模型训练

做准备。


第2周最终应该理解:

复制代码
现实问题

↓

数据

↓

样本

↓

特征

↓

标签

↓

清洗数据

↓

发现规律

↓

准备模型
相关推荐
段一凡-华北理工大学6 小时前
工业智能体:从Codex/Claude到项目实战~系列文章05:从“AI助手“到“工业智能体“:能力跃迁与落地范式
人工智能·python·claude·codex·工业智能体·高炉炼铁智能化
深蓝AI6 小时前
ContextVar 到线程池就丢了?asyncio.to_thread 和 run_in_executor 实测
python
岁月宁静8 小时前
什么是 Agent:从"会聊天"到"会做事"
人工智能·python
岁月宁静8 小时前
AI 应用开发工程师简历怎么写:HR 初筛、技术复筛、面试追问,三道关卡各看什么?
人工智能·python·面试
来让爷抱一个8 小时前
Python 异步里混用同步库,事件循环被卡住的全过程
开发语言·python
小肝一下10 小时前
3.基础语法(3)
python
深蓝AI11 小时前
Python 子进程树:父进程被杀后,孙进程为何还在跑?
python
心祭丫丫11 小时前
【每天一个 Python 小案例17】Python 实现通讯录
开发语言·人工智能·笔记·python·学习
爱你真是太好了11 小时前
Skill 索引瘦身与渐进加载
python
贾公子11 小时前
检测链路的容量规划——用 Little's Law 算清 QPS、并发与积压
后端·python