24/8/8算法条记 决定树构建鸢尾花

[复制链接]
发表于 2026-2-9 15:01:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
决定树是一种由算法主动筹划的模子。在呆板学习中,构建决定树的过程通常依照以下步调:

  •         特性选择:算法会评估每个特性,并选择一个特性作为节点分裂的依据。这个选择基于某种准则,如信息增益(ID3算法)或Gini不纯度(CART算法)。
  •         最佳分裂点确定:算法管帐算每个特性的全部大概分裂点,并选择一个使得不纯度最小(或信息增益最大)的分裂点。
  •         递归分裂:在选择了特性和分裂点后,算法会递归地对数据集的每个子集重复上述过程,直到满意克制条件。
  •         克制条件:克制条件可以是多种因素,比方:

    • 数据集的不纯度低于某个阈值。
    • 到达预设的最大树深度。
    • 节点中的样本数量低于某个阈值。
    • 没有更多的特性可以用来分裂。

  •         剪枝:为了防止过拟合,算法大概会接纳剪枝技能来镌汰树的复杂度。这包罗预剪枝(在生长过程中限定树的巨细)和后剪枝(老师长整棵树,然后从底部剪除不须要的分支)。
  •         输出模子:终极,算法会输出一个决定树模子,该模子可以通过一系列的标题(特性和分裂点)来对新的数据点举行分类。
起首导入库和数据,分割数据集,创建 DecisionTreeClassifier 的实例并利用练习集数据对其举行练习。猜测分数
  1. import numpy as np
  2. from sklearn.tree import DecisionTreeClassifier
  3. from sklearn import datasets
  4. import graphviz
  5. from sklearn.model_selection import train_test_split
  6. from sklearn import tree
  7. iris = datasets.load_iris()
  8. X = iris['data']
  9. y = iris['target']
  10. feature_names = iris['feature_names']
  11. X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state =256)
  12. model = DecisionTreeClassifier()
  13. model.fit(X_train,y_train)
  14. print('测试数据得分',model.score(X_test,y_test))
  15. print('算法预测结果',model.predict(X_test))
  16. print('真实结果    ',y_test)
复制代码
  1. #逻辑斯蒂回归中,手动计算过概率
  2. model.predict_proba(X_test)
复制代码


构建决定树
  1. dot_data = tree.export_graphviz(model,filled=True,rounded=True,feature_names=feature_names)
  2. graphviz.Source(dot_data)
复制代码

我们可以分析出构建的决定树利用了以下特性和计谋:

  •         特性选择:决定树利用了鸢尾花数据会合的以下特性:

    • petal length (cm):花瓣长度
    • petal width (cm):花瓣宽度
    • sepal width (cm):萼片宽度

  •         分裂准则:决定树的每个节点都基于某个特性的阈值举行分裂,比方 "petal length (cm) <= 2.45" 表现如果花瓣长度小于或即是2.45厘米,则按照这个条件举行数据的分裂。
  •         Gini不纯度:每个节点都表现了Gini不纯度值,这是权衡数据集纯度的指标。Gini不纯度越低,表现数据集的纯度越高。比方,一个节点表现 "gini = 0.666" 表现该节点的不纯度较高,而 "gini = 0.0" 表现该节点的样本全部属于同一种别。
  •         样本数量:每个节点都表现了该节点下的样本数量,比方 "samples = 120" 表现该节点下有120个样本。
  •         种别分布:每个节点都表现了该节点下各个种别的样本数量,比方 "value = [39, 39, 42]" 表现该节点下有39个样本属于第一类,39个样本属于第二类,42个样本属于第三类。
  •         递归分裂:决定树通过递归的方式举行分裂,直到满意克制条件,比方Gini不纯度降至0(全部样本属于同一种别)大概到达预设的最大深度。
  •         克制条件:当一个节点的Gini不纯度降至0,大概样本数量很少时,分裂会克制。比方,"gini = 0.0" 表现该节点下的全部样本都属于同一种别,不必要进一步分裂。
  •         特性紧张性:从截图中可以看出,花瓣长度和宽度的特性在多个节点中被用作分裂准则,这表明这些特性对于分类大概更为紧张。
  •         树的深度:从截图中可以看出,树的深度相对较浅,这意味着模子大概没有过拟合,但也大概没有捕捉到数据的全部特性。
  •         猜测效果:终极,每个叶节点都会给出一个猜测效果,通常是多数投票的效果。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表