首先先看Iris数据集

Sepal.Length——花萼长度 Sepal.Width——花萼宽度

Petal.Length——花瓣长度 Petal.Width——花瓣宽度

通过上述4中属性可以预测花卉属于Setosa,Versicolour,Virginica 三个种类中的哪一类

决策树 by CART

决策树有挺多种,这里讲下CART

CART的执行过程是这样的:

  1. 用特征值k和下限tk二分子集
  2. 不断二分,直到到达最大深度或者划分不能再减少不纯度为止

这一下sklearn都会自动帮我们完成,我们调用就行了

如何避免过拟合问题

减小最大深度等等

一个tip:

​ min_* 的调大

​ max_*的调小

​ 就是DecisionTreeClassifier里面的参数,具体看文档_(:з」∠)_

损失函数的比较

sklearn提供了两种损失函数gini和entropy

gini是通过计算每个节点的不纯度,具体公式如下↓

\(J(k,t_k) = \frac{m_{left}}{m}G_{left} + \frac{m_{right}}{m}G_{right}\)

entropy在这里就不再赘述了

sklearn默认的是调用gini,因为gini的速度会快点,而且两者最后的效果是差不多的,真要比的话entropy产生的决策树会更平衡点

接下来我们来看代码

from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
import numpy as np iris = load_iris()
X = iris.data[:, 2:] # petal length and width
y = iris.target #目标值 tree_clf = DecisionTreeClassifier(max_depth=2, random_state=42) #定义最大深度和确定随机种子
tree_clf.fit(X, y) #训练
print(tree_clf.predict_proba([[5, 1.5]])) #预测返回的是可能性 #以上代码运行后将会产生如下输出 [[ 0. 0.90740741 0.09259259]]
#分别代表属于每一种类别可能的概率
#也可以用如下代码
print(tree_clf.predict[[5,1.5]]) #直接输出属于哪一类

看下上面生成的决策树的样子

注:

​ valuse是它划分到各个类的数量

​ samples 指的是当前节点的数据个数

​ 从左表橙色的点可以看出,gini=0意味着划分到了相同的类别里面

ps.以上代码及图片来自《Hands-On Machine Learning with Scikit-Learn》一书

如需转载请注明出处

喜欢要不支持下(:з」∠)

用决策树(CART)解决iris分类问题的更多相关文章

  1. 机器学习实战---决策树CART简介及分类树实现

    https://blog.csdn.net/weixin_43383558/article/details/84303339?utm_medium=distribute.pc_relevant_t0. ...

  2. 机器学习实战---决策树CART回归树实现

    机器学习实战---决策树CART简介及分类树实现 一:对比分类树 CART回归树和CART分类树的建立算法大部分是类似的,所以这里我们只讨论CART回归树和CART分类树的建立算法不同的地方.首先,我 ...

  3. 02-23 决策树CART算法

    目录 决策树CART算法 一.决策树CART算法学习目标 二.决策树CART算法详解 2.1 基尼指数和熵 2.2 CART算法对连续值特征的处理 2.3 CART算法对离散值特征的处理 2.4 CA ...

  4. 03机器学习实战之决策树CART算法

    CART生成 CART假设决策树是二叉树,内部结点特征的取值为“是”和“否”,左分支是取值为“是”的分支,右分支是取值为“否”的分支.这样的决策树等价于递归地二分每个特征,将输入空间即特征空间划分为有 ...

  5. Keras入门(一)搭建深度神经网络(DNN)解决多分类问题

    Keras介绍   Keras是一个开源的高层神经网络API,由纯Python编写而成,其后端可以基于Tensorflow.Theano.MXNet以及CNTK.Keras 为支持快速实验而生,能够把 ...

  6. 决策树--CART树详解

    1.CART简介 CART是一棵二叉树,每一次分裂会产生两个子节点.CART树分为分类树和回归树. 分类树主要针对目标标量为分类变量,比如预测一个动物是否是哺乳动物. 回归树针对目标变量为连续值的情况 ...

  7. 【笔记】二分类算法解决多分类问题之OvO与OvR

    OvO与OvR 前文书道,逻辑回归只能解决二分类问题,不过,可以对其进行改进,使其同样可以用于多分类问题,其改造方式可以对多种算法(几乎全部二分类算法)进行改造,其有两种,简写为OvO与OvR OvR ...

  8. 采用boosting思想开发一个解决二分类样本不平衡的多估计器模型

    # -*- coding: utf-8 -*- """ Created on Wed Oct 31 20:59:39 2018 脚本描述:采用boosting思想开发一个 ...

  9. 决策树的剪枝,分类回归树CART

    决策树的剪枝 决策树为什么要剪枝?原因就是避免决策树“过拟合”样本.前面的算法生成的决策树非常的详细而庞大,每个属性都被详细地加以考虑,决策树的树叶节点所覆盖的训练样本都是“纯”的.因此用这个决策树来 ...

随机推荐

  1. Python是如何进行内存管理

    三个方面:一对象的引用计数机制,二垃圾回收机制,三内存池机制 一.对象的引用计数机制 Python内部使用引用计数,来保持追踪内存中的对象,所有对象都有引用计数. 引用计数增加的情况: 1,一个对象分 ...

  2. 【Python3练习题 020】 求1+2!+3!+...+20!的和

    方法一 import functools   sum = 0 for i in range(1,21):     sum = sum + functools.reduce(lambda x,y: x* ...

  3. Bootstrap知识记录:排版样式

    ---恢复内容开始--- 一.页面排版Bootstrap 提供了一些常规设计好的页面排版的样式供开发者使用.1.页面主体Bootstrap 将全局font-size 设置为14px,line-heig ...

  4. tomcat启动的时候报错Failed to start component

    在idea中运行tomcat时,遇到异常,异常信息如下: 16-Jan-2018 16:33:37.325 信息 [localhost-startStop-1] org.apache.catalina ...

  5. [转帖]BRD、MRD 和 PRD

    来源: https://www.zhihu.com/question/19655491 BRD 商业需求文档 Business Requirement Document MRD 市场需求文档 Mark ...

  6. [转帖]Linux 硬件和系统配置查看命令小结

    https://blog.csdn.net/strongwangjiawei/article/details/8208825 转帖了不少 发现自己记住的还是不多.. Linux 硬件和系统配置查看命令 ...

  7. [转帖]再次提醒Google Chrome用户应尽快升级浏览器到72.0.3626.121

    再次提醒Google Chrome用户应尽快升级浏览器到72.0.3626.121 转帖地址: https://www.cnbeta.com/articles/tech/825591.htm 国内离线 ...

  8. SQL查询临时表空间的数据

  9. Linux安装mysql5.6

    安装mysql5.6https://www.cnblogs.com/wangdaijun/p/6132632.html

  10. linux audit审计(8)--开启audit对系统性能的影响

    我们使用测试性能的工具,unixbench,它有一下几项测试项目: Execl Throughput 每秒钟执行 execl 系统调用的次数 Pipe Throughput 一秒钟内一个进程向一个管道 ...