决策树基础知识看这里:【机器学习】决策树
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. 数据情况
来源:(阿里云天池)

字段介绍:

- 代码实现
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()
运行结果:

