第六章.决策树(Decision Tree)—CART算法

这篇具有很好参考价值的文章主要介绍了第六章.决策树(Decision Tree)—CART算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第六章.决策树(Decision Tree)

6.2 CART算法

CART决策树的生成就是递归地构建二叉决策树的过程。CART用基尼(Gini)系数最小化准则来进行特征选择,生成二叉树

1.Gini系数计算:

cart决策树,Python机器学习算法基础—覃秉丰,决策树,算法,机器学习,CART算法

2.CART示例

1).题干:

  • 分别计算它们的Gini系数增益,取Gini系数增益值最大的属性作为决策树的根节点属性。
    cart决策树,Python机器学习算法基础—覃秉丰,决策树,算法,机器学习,CART算法

2).计算

①.根节点的Gini系数:
cart决策树,Python机器学习算法基础—覃秉丰,决策树,算法,机器学习,CART算法
②.根据是否有房来进行划分:
cart决策树,Python机器学习算法基础—覃秉丰,决策树,算法,机器学习,CART算法
③.根据婚姻状况来进行划分:
cart决策树,Python机器学习算法基础—覃秉丰,决策树,算法,机器学习,CART算法

④.根据年收入进行划分:

  • 例如年收入为60和70这两个值时,我们算得其中间值为65。 倘若以中间值65作为分割点,则得Gini系数增益为 :
    cart决策树,Python机器学习算法基础—覃秉丰,决策树,算法,机器学习,CART算法

  • 所有年收入的Gini系数增益:
    cart决策树,Python机器学习算法基础—覃秉丰,决策树,算法,机器学习,CART算法

⑤.根据计算可知,三个属性划分根节点的增益最大的有两个:婚姻状况和年收入属性,他们的增益都是0.12,可以随机选择一个作为根节点。(以婚姻状况为根节点举例)

  • 婚姻状况作为根节点的Gini系数:
    cart决策树,Python机器学习算法基础—覃秉丰,决策树,算法,机器学习,CART算法

  • 根据是否有房来进行划分:
    cart决策树,Python机器学习算法基础—覃秉丰,决策树,算法,机器学习,CART算法

  • 根据年收入来进行划分:

    • 例如年收入为70和85这两个值时,中间值为77.5。 倘若以中间值77.5作为分割点,则得Gini系数增益为 :
      cart决策树,Python机器学习算法基础—覃秉丰,决策树,算法,机器学习,CART算法
    • 所有年收入的Gini系数增益:
      cart决策树,Python机器学习算法基础—覃秉丰,决策树,算法,机器学习,CART算法

⑥.最后构建的CART
cart决策树,Python机器学习算法基础—覃秉丰,决策树,算法,机器学习,CART算法

3.剪枝

剪枝可以在一定程度上抑制过拟合的问题。

1).剪枝前

cart决策树,Python机器学习算法基础—覃秉丰,决策树,算法,机器学习,CART算法

2).剪枝后

cart决策树,Python机器学习算法基础—覃秉丰,决策树,算法,机器学习,CART算法

4.CART算法的优缺点

1).优点

①.小规模数据集有效

2).缺点

①.处理连续变量不好
②.类别较多时,错误增加的比较快
③.不能处理大量数据

5.决策树—CART

1).cart.csv中的数据

cart决策树,Python机器学习算法基础—覃秉丰,决策树,算法,机器学习,CART算法

2).代码:

import numpy as np
from sklearn import tree
import graphviz
import csv

# 加载数据
DTree = open(r'D:\\Data\\cart.csv', 'r')
data_show = csv.reader(DTree)

# 属性名称
feature_names = data_show.__next__()
feature_names = np.array(feature_names)[1:-1]
print(feature_names)

# 标签名称
class_names = np.array(['no', 'yes'])
print(class_names)

data = np.genfromtxt('D:\\Data\\cart.csv', delimiter=',')

# 模型
x_data = data[1:, 1:-1]
print(x_data)

# 标签
y_data = data[1:, -1]
print(y_data)

# 创建决策树模型
model_DicisionTree = tree.DecisionTreeClassifier()
model_DicisionTree.fit(x_data, y_data)

# 导出决策树
dot_data = tree.export_graphviz(model_DicisionTree, out_file=None, feature_names=feature_names,
                                class_names=class_names, filled=True, rounded=True, special_characters=True)

graph = graphviz.Source(dot_data)
graph.render('cart')

3).结果展示:

cart决策树,Python机器学习算法基础—覃秉丰,决策树,算法,机器学习,CART算法

6.决策树—线性二分类示例

1)LR-testSet.csv中的数据:

  • LR-testSet.csv

2).代码:

import numpy as np
from sklearn import tree
from sklearn.metrics import classification_report
import matplotlib.pyplot as plt
import graphviz

# 加载数据
data = np.genfromtxt('D:\\Data\\LR-testSet.csv', delimiter=',')

x_data = data[:, :-1]
y_data = data[:, -1]

# 创建模型
model_DecisionTree = tree.DecisionTreeClassifier()
model_DecisionTree.fit(x_data, y_data)

predictions = model_DecisionTree.predict(x_data)
print(classification_report(y_data, predictions))

# 导出决策树
feature_names = np.array(['x', 'y'])
class_names = np.array(['label0', 'label1'])
dot_data = tree.export_graphviz(model_DecisionTree, out_file=None, feature_names=feature_names,
                                class_names=class_names, filled=True, rounded=True,
                                special_characters=True)

graph = graphviz.Source(dot_data)
graph.render('Linear_classification')

# 获取数据值所在范围
x_min, x_max = x_data[:, 0].min() - 1, x_data[:, 0].max() + 1
y_min, y_max = x_data[:, 1].min() - 1, x_data[:, 1].max() + 1

# 生成网格矩阵
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02), np.arange(y_min, y_max, 0.02))

z = model_DecisionTree.predict(np.c_[xx.ravel(), yy.ravel()])
z = z.reshape(xx.shape)

# 绘制等高线
cs = plt.contourf(xx, yy, z)
plt.scatter(x_data[:, 0], x_data[:, 1], c=y_data)
plt.show()

3).结果展示:

cart决策树,Python机器学习算法基础—覃秉丰,决策树,算法,机器学习,CART算法

7.决策树—非线性二分类示例

1).CSV中的数据:

  • LR-testSet2.csv

2).代码:

import numpy as np
from sklearn import tree
from sklearn.metrics import classification_report
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
import graphviz

# 加载数据
data = np.genfromtxt('D:\\Data\\LR-testSet2.txt', delimiter=',')

x_data = data[:, :-1]
y_data = data[:, -1]

# 分割数据
x_train, x_test, y_train, y_test = train_test_split(x_data, y_data)

# 创建决策树模型
# max_depth,树的深度
# min_samples_split 内部节点再划分所需最小样本数
model_DecisionTree = tree.DecisionTreeClassifier(max_depth=7, min_samples_split=4)
model_DecisionTree.fit(x_train, y_train)

predictions = model_DecisionTree.predict(x_train)
print(classification_report(predictions, y_train))

predictions = model_DecisionTree.predict(x_test)
print(classification_report(predictions, y_test))

# 导出决策树
feature_names = np.array(['x', 'y'])
class_names = np.array(['label0', 'label1'])
dot_data = tree.export_graphviz(model_DecisionTree, out_file=None, feature_names=feature_names,
                                class_names=class_names, filled=True, rounded=True,
                                special_characters=True)

graph = graphviz.Source(dot_data)
graph.render('Linear_classification')

# 获取数据值所在范围
x_min, x_max = x_data[:, 0].min() - 1, x_data[:, 0].max() + 1
y_min, y_max = x_data[:, 1].min() - 1, x_data[:, 1].max() + 1

# 生成网格矩阵
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02), np.arange(y_min, y_max, 0.02))

z = model_DecisionTree.predict(np.c_[xx.ravel(), yy.ravel()])
z = z.reshape(xx.shape)

# 绘制等高线
cs = plt.contourf(xx, yy, z)
plt.scatter(x_data[:, 0], x_data[:, 1], c=y_data)
plt.show()

3).结果展示:

cart决策树,Python机器学习算法基础—覃秉丰,决策树,算法,机器学习,CART算法文章来源地址https://www.toymoban.com/news/detail-798043.html

到了这里,关于第六章.决策树(Decision Tree)—CART算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python机器学习(六)决策树(上) 构造树、信息熵的分类和度量、信息增益、CART算法、剪枝

    模拟相亲的过程,通过相亲决策图,男的去相亲,会先选择性别为女的,然后依次根据年龄、长相、收入、职业等信息对相亲的另一方有所了解。 通过决策图可以发现,生活中面临各种各样的选择,基于我们的经验和自身需求进行一些筛选,把判断背后的逻辑整理成结构图,

    2024年02月14日
    浏览(48)
  • 机器学习---决策树算法(CLS、ID3、CART)

    1. 决策树 决策树(Decision Tree)又称为判定树,是运用于分类的一种树结构。其中的每个内部结点 (internal node)代表对某个属性的一次测试,每条边代表一个测试结果,叶结点(leaf)代表某 个类(class)或者类的分布(class distribution),最上面的结点是根结点。 决策树提供

    2024年02月10日
    浏览(44)
  • (统计学习方法|李航)第五章决策树——四五节:决策树的剪枝,CART算法

    目录 一,决策数的剪枝 二,CART算法 1.CART生成 (1)回归树的生成 (2)分类树的生成          2.CART剪枝 (1)剪枝,形成一个子树序列 (2)在剪枝得到的子树序列T0,T1-----,Tn中通过交叉验证选取最优子树Ta   好的决策树不高不宽     柳建男的”后剪枝“挥手创作   如果

    2024年02月14日
    浏览(45)
  • 【机器学习】Decision Tree 决策树算法详解 + Python代码实战

    决策树即通过一步步决策得到最终结果的树 如下图所示,如果要判断一个人在家庭里的身份,我们可以先判断ta年龄是否大于15,如果是,则说明ta是爷爷或奶奶或妈妈,如果不是,则再判断ta是否为男性,如果是,则ta是儿子,否则ta是女儿。 这就是一个决策树的基本流程。

    2024年01月23日
    浏览(46)
  • 决策树--CART分类树

    CART(Classification and Regression Trees)分类树是一种基于决策树的机器学习算法,用于解 决分类问题。它通过构建树状的决策规则来对数据进行分类。 ① 选择一个特征和相应的切分点,将数据集分为两个子集。 ② 对每个子集递归地重复步骤1,直到满足停止条件。 ③ 当达到停

    2024年02月01日
    浏览(40)
  • 机器学习算法之决策树(decision tree)

    决策树(Decision Tree,又称为判定树)算法是机器学习中常见的一类算法,是一种以树结构形式表达的预测分析模型。决策树属于监督学习(Supervised learning),根据处理数据类型的不同,决策树又为分类决策树与回归决策树。最早的的决策树算法是由Hunt等人于1966年提出,Hunt算法

    2024年02月13日
    浏览(48)
  • CART算法解密:从原理到Python实现

    本文深入探讨了CART(分类与回归树)算法的核心原理、实现方法以及应用场景。文章首先介绍了决策树的基础知识,然后详细解析了CART算法的工作机制,包括特征选择和树的构建。接着,通过Python和PyTorch的实例代码展示了CART算法在实际问题中的应用。最后,文章评价了该算

    2024年02月05日
    浏览(71)
  • 【机器学习】决策树(Decision Tree,DT)算法介绍:原理与案例实现

    前言   决策树算法是机器学习领域中的一种重要分类方法,它通过树状结构来进行决策分析。决策树凭借其直观易懂、易于解释的特点,在分类问题中得到了广泛的应用。本文将介绍决策树的基本原理,包括熵和信息熵的相关概念,以及几种经典的决策树算法。   在进

    2024年04月11日
    浏览(42)
  • 机器学习集成学习——GBDT(Gradient Boosting Decision Tree 梯度提升决策树)算法

    机器学习神经网络——Adaboost分离器算法 机器学习之SVM分类器介绍——核函数、SVM分类器的使用 机器学习的一些常见算法介绍【线性回归,岭回归,套索回归,弹性网络】 文章目录 系列文章目录 前言 一、GBDT(Gradient Boosting Decision Tree) 梯度提升决策树简介 1.1、集成学习 1.2、

    2024年02月09日
    浏览(50)
  • 吃透《西瓜书》第四章 决策树定义与构造、ID3决策树、C4.5决策树、CART决策树

    目录 一、基本概念 1.1 什么是信息熵? 1.2 决策树的定义与构造 二、决策树算法 2.1 ID3 决策树 2.2 C4.5 决策树 2.3 CART 决策树  信息熵: 熵是 度量样本集合纯度 最常用的一种指标,代表一个系统中蕴含多少信息量, 信息量越大 表明一个 系统不确定性就越大, 就存在越多的可

    2024年02月11日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包