cart算法

python决策树 math库CART算法

妖精的绣舞 提交于 2020-11-19 12:01:56
每周一搏,提升自我。 本篇博文主要是对math的CART算法总结,参照博文:http://www.cnblogs.com/wsine/p/5180321.html 代码如下: #!/usr/bin/python #coding:utf-8 ''' CART决策树算法 ''' import matplotlib.pyplot as plt #决策树属性设置 decisionNode=dict(boxstyle="sawtooth",fc="0.8") leafNode=dict(boxstyle="round4",fc="0.8") arrow_args=dict(arrowstyle="<-") #createPlot 主函数,调用即可画出决策树,其中调用登了剩下的所有的函数,inTree的形式必须为嵌套的决策树 def createPlot(inThree): fig=plt.figure(1,facecolor='white') fig.clf() axprops=dict(xticks=[],yticks=[]) createPlot.ax1=plt.subplot(111,frameon=False,**axprops) #no ticks # createPlot.ax1=plt.subplot(111,frameon=False) #ticks for demo

3.机器学习之决策树详解

半腔热情 提交于 2020-03-16 13:47:41
本篇博客主要介绍机器学习中的决策树模型。决策树算法在机器学习中算是很经典的一个算法系列。它既可以作为分类算法,也可以作为回归算法,同时也特别适合集成学习比如随机森林。决策树模型是一类算法的集合,在数据挖掘十大算法中,具体的决策树算法占有两席位置,即C4.5和CART算法。 决策树分类的思想类似于找对象。现想象一个女孩的母亲要给这个女孩介绍男朋友,于是有了下面的对话: 女儿:多大年纪了? 母亲:26。 女儿:长的帅不帅? 母亲:挺帅的。女儿:收入高不? 母亲:不算很高,中等情况。 女儿:是公务员不? 母亲:是,在税务局上班呢。 女儿:那好,我去见见。 这个女孩的决策过程就是典型的分类树决策。相当于通过年龄、长相、收入和是否公务员对将男人分为两个类别:见和不见。假设这个女孩对男人的要求是:30岁以下、长相中等以上并且是高收入者或中等以上收入的公务员,那么这个可以用下图表示女孩的决策逻辑:  决策树(decision tree)是一个树结构(可以是二叉树或非二叉树)。其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。 决策树是在已知各种情况发生概率((各个样本数据出现中

CART算法

佐手、 提交于 2020-01-14 21:56:38
CART算法 CART算法 区别于ID3算法的信息增益和C4.5算法的信息增益率,CART算法在分支处理中分支属性的度量指标是Gini指标,基尼指数越小,不确定程度越小,区分力越大。定义如下: G i n i ( S i ) = 1 − ∑ i = 1 m p j 2 Gini(S_i)=1-\sum_{i=1}^mp_j^2 G i n i ( S i ​ ) = 1 − i = 1 ∑ m ​ p j 2 ​ p j = ∣ C j ∣ ∣ S ∣ p_j=\frac{|C_j|}{|S|} p j ​ = ∣ S ∣ ∣ C j ​ ∣ ​ G i n i ( S ) = S 1 S G i n i ( S 1 ) + S 2 S G i n i ( S 2 ) + . . . S i S G i n i ( S i ) Gini(S)=\frac{S_1}{S}Gini(S_1)+\frac{S_2}{S}Gini(S_2)+...\frac{S_i}{S}Gini(S_i) G i n i ( S ) = S S 1 ​ ​ G i n i ( S 1 ​ ) + S S 2 ​ ​ G i n i ( S 2 ​ ) + . . . S S i ​ ​ G i n i ( S i ​ ) 其中, S i S_i S i ​ 是属性 S S S 的 i i i 种取值结果

基础算法 | 决策树(ID3、C4.5和CART决策树python实现)

梦想的初衷 提交于 2019-12-25 10:57:47
决策树(Decision Tree)是一种基于规则的基础而又经典的分类与回归方法,其模型结构呈现树形结构,可认为是一组if-then规则的集合。 决策树主要包含三个步骤:特征选择、决策树构建和决策树剪枝。 典型的决策树有ID3、C4.5和CART(Classification And Regression),它们的主要区别在于树的结构与构造算法。其中ID3和C4.5只支持分类,而CART支持分类和回归。 1.决策树简介 1.1. ID3决策树 ID3决策树根据信息增益来构建决策树; 对训练集(或子集) D ,计算其每个特征的信息增益,并比较大小,选择信息增益最大的特征作为该节点的特征,由该节点的不同取值建立子节点。再对子节点递归以上步骤,构建决策树;直到所有特征的信息增益均小于预设阈值或没有特征为止。 缺点: 信息增益偏向取值较多的特征 g ( D , A ) = H ( D ) − H ( D ∣ A ) = H ( D ) − ∑ i = 1 n ∣ D i ∣ ∣ D ∣ H ( D ) = H ( D ) − ( − ∑ i = 1 n ∣ D i ∣ ∣ D ∣ ∑ k = 1 k ∣ D i k ∣ ∣ D i ∣ l o g 2 ∣ D i k ∣ ∣ D i ∣ ) g(D,A)=H(D)-H(D|A)=H(D)-\sum_{i=1}^{n}\frac{\left

决策树

余生颓废 提交于 2019-12-18 10:47:07
   决策树 是一种基本的分类与回归方法。决策树模型呈树形结构,可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。其主要优点是模型具有可读性,分类速度快。学习时,利用训练数据,根据损失函数最小化的原则建立决策树模型。预测时,对新的数据,利用决策树模型进行分类。决策树学习通常包括3个步骤: 特征选择 、 决策树的生成 和 决策树的修剪 。    定义(决策树): 决策树由结点(node)和 有向边(directed edge)组成。结点有两种类型:内部结点(internal node)和叶节点(leaf node)。内部结点表示一个特征或属性,叶节点表示一个类。   决策树的路径或其对应的if-then规则集合具有一个重要的性质:互斥并且完备。这就是说,每一个实例都被一条路径或一条规则所覆盖,而且只被一条路径或一条规则所覆盖。   决策树学习的算法通常是一个递归地选择最优特征,并根据该特征对训练数据进行分割,使得对各个子数据集有一个最好的分类的过程。决策树学习算法包括 特征选择 、 决策树生成 与 决策树的剪枝 过程。决策树学习常用的算法有 ID3 、 C4.5 与 CART 。    特征选择    通常特征选择的准则是 信息增益 或 信息增益比 。    特征增益   在信息论与概率统计中,熵(entropy)是表示随机变量不确定性的度量

CART算法

ぃ、小莉子 提交于 2019-12-16 14:08:36
CART算法可以用来解决分类与回归问题。CART假设决策树是二叉树,内部节点的取值为“是”或者“否”,左边的分支取值为“是”分支,右边的分支取值为“否”分支。CART算法采用gini系数来进行特征的选择与划分。 import cv2 import time import logging import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score import os import struct total_class = 10 # 这里选用了一个比较小的数据集,因为过大的数据集会导致栈溢出 # 二值化 def binaryzation(img): cv_img = img.astype(np.uint8) cv2.threshold(cv_img, 50, 1, cv2.THRESH_BINARY_INV, cv_img) return cv_img #@log def binaryzation_features(trainset): features = [] for img in trainset: img = np.reshape(img, (28, 28)) cv

决策树算法

牧云@^-^@ 提交于 2019-12-05 09:25:17
一、目录 1、目录 2、决策树初步认知 3、决策树--ID3算法 4、决策树--C4.5算法 5、决策树--CART 6、CART算法的剪枝 7、决策树的优缺点 8、其他补充 二、决策树初步认知 决策树算法在机器学习中算是很经典的一个算法系列了。它先按照影响结果的主要因素进行排序,选取最主要的因素先进行分岔,依次循环下去。各种方法不同之处在于选择的因素判别方法不同。 它既可以作为分类算法,回归算法,同时也特别适合集成学习比如随机森林。作为一个码农经常会不停的敲if-else 。If-else其实就已经在用到决策树的思想了:关于递归的终止条件有三种情形: 1)当前节点包含的样本属于同一类,则无需划分,该节点作为叶子节点,该节点输出的类别为样本的类别 2)该节点包含的样本集合为空,不能划分 3)当前属性集为空,则无法划分,该节点作为叶子节点,该节点的输出类别为样本中数量多数的类别 本文就对 ID3, C4.5和CART 算法做一个详细的介绍。选择CART做重点介绍的原因是scikit-learn使用了优化版的CART算法作为其决策树算法的实现。 三、决策树 --ID3 算法 1970年代,一个叫昆兰的大牛找到了用信息论中的熵来度量决策树的决策选择过程,方法一出,它的简洁和高效就引起了轰动,昆兰把这个算法叫做ID3。 1.1 信息熵 首先,我们需要熟悉信息论中熵的概念。