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周最终应该理解:

复制代码
现实问题

↓

数据

↓

样本

↓

特征

↓

标签

↓

清洗数据

↓

发现规律

↓

准备模型
相关推荐
惊讶的猫10 分钟前
langchian_agent的高级使用
python
fbincon1 小时前
Claude Code 自定义状态栏工具:安装、配置与 Subagent 状态展示
python·typescript·claude·claude-code·statusline
yunfengzhineng1 小时前
天津立体库货架配套厂家
大数据·运维·人工智能·python
m0_674571972 小时前
力扣 hot 100 python
python·算法·leetcode
小白快快跑哦2 小时前
python-字符串全解(六):正则表达式-元字符与转义
python·正则表达式·字符串·元字符·转义
Want5952 小时前
Python炫酷烟花①
开发语言·python
青少儿编程课堂2 小时前
蓝桥杯+全国青少年信息素养大赛+电子学会PythonC/C++考级:最长公共子序列LCS解析
c++·python·算法·bfs·信息学竞赛
Y3815326623 小时前
印度电商数据采集教程:用 SerpBase 查 Flipkart/Myntra/Ajio 商品(附代码)
数据库·python
阿维的博客日记3 小时前
大白话解析快排Python
python
doujiaozh3 小时前
我在 DOS 6.22 上跑通了 Kimi AI:一场跨越 40 年的硬核接力
python