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

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

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()

运行结果:

相关推荐
爱读书的小胖21 分钟前
LeetCode 122:买卖股票的最佳时机 II(C)解题分析
算法
结局无敌22 分钟前
React Native for OpenHarmony 实战:三方库 react-native-modal-dialog 的鸿蒙化适配指南
深度学习·算法·react native·react.js·harmonyos
在所不辞兄43 分钟前
为什么神经网络对对抗扰动和分布偏移往往比较脆弱,而人类感知相对更鲁棒?
人工智能·深度学习·神经网络·机器学习
OPEN-F1 小时前
ROS2系列教程:上位机建图与导航(原理综合)
算法·机器人
weixin_307779131 小时前
C++代码实现MATLAB中的fitrtree函数功能
开发语言·c++·算法·matlab
tomwang03221 小时前
路径优化建模、优化算法分类及工程化小结
算法·数学建模·分类
小羊没烦恼!1 小时前
Ajax与JSON的一些总结
android·java·前端·数据库·mysql·算法·okhttp
szxinmai主板定制专家1 小时前
储能 EMS、微网控制器选型:RK3588、RK3576、RK3568+FPGA 怎么选?多网、多 CAN、EMC 设计权衡
人工智能·深度学习·机器学习·fpga开发·工业网关·rk3576·电力网关
2501_926978331 小时前
人机通信协议--人和机器之间的交互想象
人工智能·经验分享·算法·ai写作
行者全栈架构师1 小时前
【鸿蒙心迹】互动卡片全链路——把核心功能放到桌面(FormKit 实战)(HarmonyOS 7.x)
前端·算法·架构