【决策树】泰坦尼克号生存预测

决策树基础知识看这里:【机器学习】决策树

1. CART决策树API介绍

class sklearn.tree.DecisionTreeClassifier(criterion = 'gini', max_depth = None, random_state = None)

  • criterion: 特征选择标准。'gini' 或 'entropy', 前者代表基尼系数,后者代表信息增益。默认为'gini', 即CART算法。
  • mini_samples_split: 内部节点再划分所需最小样本数
  • mini_samples_leaf: 叶子结点最少样本数
  • max_depth: 决策数最大深度

2. 案例背景与数据情况

2.1. 背景

1912年4月15日,在她的首次航行中,泰坦尼克号在与冰山相撞后沉没,在2224名乘客和机组人员中造成1502人死亡。造成海难失事的原因之一是乘客和机组人员没有足够的救生艇。尽管幸存生存有一些运气因素,但有些人比其他人更容易生存,例如妇女,儿童和上流社会。

有了遇难和幸运数据,++运用机器学习工具来预测哪些乘客可幸免于悲剧++。

2.2. 数据情况

来源:(阿里云天池)

字段介绍:

  1. 代码实现
python 复制代码
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import classification_report
import matplotlib.pyplot as plt
from sklearn.tree import plot_tree

# 加载数据
data = pd.read_csv('E:/数据分析材料/train.csv')
# print(data.info())
# 数据的预处理
x = data[['Pclass', 'Sex', 'Age']]
y = data['Survived']
# 将Age列中的缺失值用年龄的均值填充
x['Age'].fillna(x['Age'].mean(),inplace=True)
# 对sex列进行one-hot编码
x = pd.get_dummies(x)
print(x.info())
# 数据集划分
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.2,random_state=22)

# 特征工程
# 数据值的差异不大,没做特征处理

# 模型训练
# 设定最大深度为10
estimaor = DecisionTreeClassifier(max_depth=5)
estimaor.fit(x_train,y_train)
# 模型预测
y_pred = estimaor.predict(x_test)

# 模型评估
print(f'分类报告:{classification_report(y_test,y_pred)}')
# 画出决策树的图
plt.figure(figsize=(30,20))
# 参1:模型对象 参2:是否用颜色填充 参3:绘制的决策树结构,最多十层
plot_tree(estimaor,max_depth=5,filled=True)
plt.show()

运行结果:

相关推荐
Rocky Ding*10 小时前
深入浅出IDM-VTON论文精读:虚拟试衣怎样同时保住服装语义与局部细节
论文阅读·人工智能·深度学习·机器学习·aigc·ai-native·idm-vton
严肃小白兔10 小时前
MATLAB 数值计算中的精度与误差问题:浮点运算、误差传播与数值稳定性
人工智能·算法·matlab
weixin_4684668510 小时前
视觉Transformer的“第二次革命”:ViT³如何用测试时训练重构注意力范式
人工智能·深度学习·机器学习·ai·重构·transformer·vit
青少儿编程课堂11 小时前
蓝桥杯青少组图形化省考报名倒计时·全国青少年信息素养大赛·电子学会图形化考级:校园黑白棋人机对战解析
c++·python·算法·bfs·信息学竞赛
星云_byto11 小时前
CSS布局
人工智能·机器学习·目标跟踪·1024程序员节
jktantan12 小时前
注解式脱敏:用 Jackson 的 ContextualSerializer 做字段级策略(一)
spring boot·后端·算法·spring cloud·系统架构
Dream it possible!1 天前
LeetCode 面试经典 150_多维动态规划_交错字符串(97_C++_中等)
算法·leetcode·面试·动态规划
心抵鹊1 天前
算法之双指针系列(一)
算法·leetcode
十二1 天前
【洛谷题解】P1083 [NOIP 2012 提高组] 借教室(二分答案 + 差分)
数据结构·c++·算法·蓝桥杯
小此方1 天前
[算法实战论:动态规划]回文串问题的dp解法,回文串问题的母题,以及以此为基础的派生题
算法·动态规划