
1. 需求分析根据乘客特征预测是否幸存二分类。2. 数据说明Kaggle 经典入门分类数据集模拟 1912 年泰坦尼克沉船事件乘客信息任务根据乘客特征预测是否幸存二分类。数据来源于阿里云天池。train.csv训练集891 条含 Survived 标签test.csv测试集418 条无存活标签字段含义PassengerId乘客唯一 IDSurvived目标标签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(), inplaceTrue) # 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_size0.2, random_state79)3.3 特征工程绝大多数树模型都不需要特征标准化3.4 模型训练# 参数解释criterionginigini指数max_depth10最大深度 estimator DecisionTreeClassifier(criteriongini, max_depth10) 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)) # 设置图的大小太大容易跑不出来 # 参数解释filledTrue填充颜色max_depth10最大深度 plot_tree(estimator, filledTrue, max_depth10) plt.savefig(./data/cart.png) plt.show()