02-决策树-泰坦尼克号乘客生存预测
📅 2026/7/11 6:54:50
👁️ 阅读次数
📝 编程学习
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_report3.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()
编程学习
技术分享
实战经验