day07——决策树

本文介绍了决策树的基本概念,使用sklearn库中的DecisionTreeClassifierAPI进行模型构建,并以泰坦尼克号乘客生存数据为例,展示了如何处理数据、选择特征、训练模型以及评估预测准确率。文章还提到了如何通过one-hot编码处理分类特征,以及如何保存和可视化决策树结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、认识决策树

决策树思想的来源非常朴素,程序设计中的条件分支结构就是if-then结构,最早的决策树就是利用这类结构分割数据的一种分类学习方法

举例:
在这里插入图片描述
在对这些客户进行分类预测时,我们的划分可能是下面的样子
在这里插入图片描述
那么我们怎么知道这些特征哪个放在最上面更好,这就是决策树要解决的问题

二、API

class sklearn.tree.DecisionTreeClassifier(criterion=’gini’, max_depth=None, random_state=None)
# criterion : 默认是’gini’系数,也可以选择信息增益的熵’entropy’
# max_depth : 树的深度大小
# random_state : 随机数种子
# max_depth : 树的深度大小

三、案例:泰坦尼克号乘客生存预测

1,题目概述

titanic.csv 数据描述泰坦尼克号上的个别乘客的生存状态。其中包括旅客名单,数据集中的特征是票的类别,存活,乘坐班,年龄,登陆,home.dest,房间,票,船和性别。
1、乘坐班是指乘客班(1,2,3),是社会经济阶层的代表。
2、其中age数据存在缺失。

2,分析

  • 选择我们认为重要的几个特征 [‘pclass’, ‘age’, ‘sex’]
  • 对 age 填充缺失值
  • 特征进行one-hot编码处理(DictVectorizer)
  • x.to_dict(orient=“records”) 需要将数组特征转换成字典数据数据集划分
  • 决策树分类预测

3,代码

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.feature_extraction import DictVectorizer

titan = pd.read_csv("titanic.csv")

# 数据的处理
x = titan[['pclass', 'age', 'sex']]
y = titan['survived']

# 缺失值需要处理,将特征当中有类别的这些特征进行字典特征抽取
x['age'].fillna(x['age'].mean(), inplace=True)

# 对 x 进行one-hot编码处理
# [{"pclass": "1st", "age": 29.00, "sex": "female"}, {}]
dict = DictVectorizer(sparse=False)
# 对于 x 转换成字典数据 x.to_dict(orient="records")
x = dict.fit_transform(x.to_dict(orient="records"))

# 分割训练集合测试集
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3)

# 进行决策树的建立和预测
dc = DecisionTreeClassifier(max_depth=5)
dc.fit(x_train, y_train)

print("预测的准确率为:", dc.score(x_test, y_test))

4,保存树结构

保存树的结构到dot文件

# 该函数能够导出DOT格式
sklearn.tree.export_graphviz() 
export_graphviz(estimator,out_file='tree.dot’,feature_names=[‘’,’’])

实操:将上述结果转换为树存入 dot 文件

from sklearn.tree import export_graphviz

export_graphviz(dc, out_file="./tree.dot", feature_names=['age', 'pclass=1st', 'pclass=2nd', 'pclass=3rd', '女性', '男性'])

最后把 dot 文件的内容复制到 webgraphviz 网站,实现树结构可视化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值