首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >机器学习-通俗说说决策树模型是怎么一回事

机器学习-通俗说说决策树模型是怎么一回事

原创
作者头像
用户12552515
发布2026-06-11 04:02:48
发布2026-06-11 04:02:48
150
举报

决策树模型是机器学习中最常使用的模型了,怎么理解决策树模型呢?其实它就来源于我们的生活,下面我们就来通过一个小故事来看看决策树模型到底是怎么一回事。

一、如何理解决策树-老樵夫的经验

青石岗的老樵夫打了五十年柴,远近山村都知道他挑的柴最好,烧起来火旺烟少,最受镇上茶馆酒肆的欢迎。年轻小伙子们都来拜师,想讨教挑柴的秘诀,老樵夫只是笑,说哪有什么秘诀,不过是挑得多了,眼睛就亮了。

这年秋天来了个机灵的小徒弟,天天跟着老樵夫上山,寸步不离地看他选柴。老樵夫进了山,不慌不忙往林子深处走,站在一堆倒下的木料前,先伸手摸了摸:干不干?

摸着潮乎乎的,二话不说转身就走,一点不心疼;摸着干爽的,才留下,往下问。

第二步看什么?看木质:是硬木还是软柴?硬木耐烧,留在筐里;软柴不禁烧,挑出去另放一边。

第三步再看粗细:粗硬的干透木,直接捆好往山下扛;细的硬木,留着回去当引火,也不浪费。

小徒弟记在心里,可自己选柴的时候,总还是挑不好:要么把潮湿的硬木扛回去,烧不起来被掌柜骂;要么把干松的软柴当成好柴,卖不上价钱。他忍不住问老樵夫:师傅,咱们步骤一样,怎么结果不一样?你是不是藏了一手?

老樵夫笑着带他再上山,这次碰见了一棵大樟木,倒在坡下已经半年了。小徒弟按步骤来:先摸,干的;再看,硬木;再看,粗细够,就要往筐里放。老樵夫拦住他,指着树身上的虫洞说:你忘了最后一步?被虫蛀空的硬木,看着好,其实烧起来一半都是灰,哪里算好柴?

小徒弟愣了:师傅,你之前没说这一步啊?

老樵夫坐在石头上歇脚,慢慢说:我哪能把所有步骤都提前给你列出来?这山上的柴千万种,我前二十年挑柴,就是一次次试,一次次错,才知道哪一步该先问,哪一步该后问,问到哪一步就该出结果。一开始我先看粗细,再看干湿,结果走了好多冤枉路——不干的柴再粗也没用啊!后来试得多了,才知道最先得看干湿,这是最顶用的一步,一下子就能筛掉大半不合格的,省多少力气。哪有什么定好的规矩,都是一次次从错里攒出来的法子,顺着问题一步步问下去,答案自然就出来了。

小徒弟忽然明白了:原来师傅的脑子,就像一棵分岔的树,从进山那一步开始,每一个问题分一个岔,顺着岔路往下走,最后总能走到对的答案那里。

二、用python构建一个决策树模型

那么,我们要怎么才能构建一个决策树来解决我们的决策问题呢?其实只要采集回历史经验数据,然后再用python的sklearn就可以构建一个决策树模型了。

这里以鸢尾花数据集为例,根据鸢尾花的特征来判断它的类别。代码示例如下:

代码语言:python
复制
from sklearn import tree
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt

iris = load_iris()  # 加载鸢尾花数据集
X = iris.data       # 特征数据
y = iris.target     # 标签数据


X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 划分训练集和测试集


clf = tree.DecisionTreeClassifier(criterion='gini', max_depth=3) # 创建决策树模型
clf.fit(X_train, y_train)      # 训练决策树


y_pred = clf.predict(X_test)   # 模型预测

# 可视化决策树
plt.figure(figsize=(10, 6))
tree.plot_tree(clf, 
               feature_names=iris.feature_names, 
               class_names=iris.target_names, 
               filled=True)
plt.show()

然后就能得到我们的决策树模型了:

可以看到,只要跟着决策树一步一步的判断,最终就会得到鸢尾花的类别。而这个"决策树"的决策路径,则是根据历史数据构建出来的,也就是在历史数据中,根据这样的路径能令决策结果尽量的准确。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 [email protected] 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 [email protected] 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、如何理解决策树-老樵夫的经验
  • 二、用python构建一个决策树模型
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档