美文网首页
0#05决策树

0#05决策树

作者: dogo_L1L | 来源:发表于2018-09-16 11:26 被阅读0次

0x00 数据准备

我们还是使用之前得那个气球模型,用来笔算

黄色,小,成人,用手打,不爆炸
黄色,小,成人,用脚踩,爆炸
黄色,小,小孩,用手打,不爆炸
黄色,小,小孩,用脚踩,不爆炸
黄色,大,成人,用手打,爆炸
黄色,大,成人,用脚踩,爆炸
黄色,大,小孩,用手打,不爆炸
黄色,大,小孩,用脚踩,爆炸
紫色,小,成人,用手打,不爆炸
紫色,小,小孩,用手打,不爆炸
紫色,大,成人,用脚踩,爆炸
紫色,大,小孩,用脚踩,爆炸

或者使用make_blobs自动生成一些聚类数据:

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns;sns.set()

from sklearn.datasets import make_blobs
"""
n_samples:样本点的个数

n_features:每个样本的特征数

centers:聚类的类数

cluster_std:聚类得标准差

center_box:据类点生成的范围

shuffle:洗牌

random_state:随机数种子

"""
X,y = make_blobs(n_samples=300,centers=4,random_state=0,cluster_std=1.0)
plt.scatter(X[:,0],X[:,1],c=y,s=50,cmap='rainbow')

0x01 笔算机器学习

1.先将输入的字符串进行数据化
数据化后

0,0,0,0,0
0,0,0,1,1
0,0,1,0,0
0,0,1,1,0
0,1,0,0,1
0,1,0,1,1
0,1,1,0,0
0,1,1,1,1
1,0,0,0,0
1,0,1,0,0
1,1,0,1,1
1,1,1,1,1
  1. 决策树得算法
    决策数是一棵树,所以就相当与对数据进行分类,为了方便理解,手算得时候不使用数据化后得内容.
对于原始数据
    6个爆炸
    6个不爆炸
    
第一次分类:(按颜色分类)
    黄色中:
        4不爆炸
        4爆炸
            第二次分类:(大小)
            小中:
                3不爆炸
                1爆炸
                    第三次分类:(年龄)
                    成人中:
                        1不
                        1爆炸
                            第四次分类:(操作)
                            用手打中:
                                1不爆炸
                                (结束)
                            用脚中:
                                1爆炸
                                (结束)
                    小孩中:
                        2不爆炸
                        (结束)
            大中:
                3爆炸
                1不爆炸
                    第三次分类:(年龄)
                    成人中:
                        2爆炸
                        (结束)
                            
                    小孩中:
                        1不爆炸
                        1爆炸
                            第四次分类:(操作)
                                用手打中:
                                    1不爆炸
                                    (结束)
                                用脚中:
                                    1爆炸
                                    (结束)
    紫色中:
        4不爆炸
        4爆炸
            第二次分类:(大小)
            小中:
                2不爆炸
                (结束)
            大中:
                2爆炸
                (结束)

很明显只是一次次得分类,但是知道分类结果只剩下单一得爆炸或者不爆炸为止.
画出原理图:


决策树.png

笔算就这样结束了,但是这个只是一个普通得决策树.
比如说:
为什么颜色是第一次区分?
明显得颜色对这次并没有任何得帮助,我却用来作为第一次区分,明显增加了分类得层数.
所以为了决定区分得顺序,决策树有很多种算法,最有名得是
C4.5,CART和ID3.
其中最大得区别就是决定顺序得方式.
CART是利用gini函数

ID3是利用gain函数


信息熵.png

C4.5 是利用 gain ratio(信息增益率)
信息熵的差值:
含有某种元素下的信息熵与不考虑该条件得信息熵

0x03 使用决策树

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns;sns.set()

from sklearn.datasets import make_blobs
"""
n_samples:样本数量
centers:聚类中类的个数
random_state:随机数得种子
cluster_std:每个类得标准差
"""
X,y = make_blobs(n_samples=300,centers=4,random_state=0,cluster_std=1.0,center_box=(-10,10))
plt.scatter(X[:,0],X[:,1],c=y,s=50,cmap='rainbow')

# 是用决策树进行训练
from sklearn.tree import DecisionTreeClassifier
"""
criterion:  使用的算法
            "gini"表示是用Gini函数,即CART算法
            "entropy"表示信息熵,即ID3算法
splitter:分类器,
            best表示是用最好得分类器
            random表示是用随机得分类器 
max_depth:树的最大深度。
        如果没有,那么节点增加,
        直到所有的叶子是纯
        或直到所有叶中含有比min_samples_split样本较少
min_samples_split:分裂内部节点所需的样本的最小数目
min_samples_leaf:是在叶节点所需的样本的最小数目
                    用来防止过拟合
"""
tree = DecisionTreeClassifier().fit(X,y)

# 可视化函数
def visualize_classifier(model,X,y,ax=None,cmap='rainbow'):
    #gca将figure转为axis
    ax = ax or plt.gca()
    ax.scatter(X[:,0],X[:,1],c=y,s=30,cmap=cmap,clim=(y.min(),y.max()),zorder=3)
    ax.axis('tight')
    ax.axis('off')
    #获取(xmin,xmax)
    xlim=ax.get_xlim()
    ylim=ax.get_ylim()
    model.fit(X,y)
    #*xlim表示这个中还有多个参数,即:
    #linspace中得   start=xlim的xmin
    #              stop=xlim的xmax
    xx,yy = np.meshgrid(np.linspace(*xlim,num=200),np.linspace(*ylim,num=200))
    #ravel将矩阵转为向量
    #c_将2个向量和并为一个2D的坐标矩阵
    Z=model.predict(np.c_[xx.ravel(),yy.ravel()]).reshape(xx.shape)
    n_classes = len(np.unique(y))
    """
    画出等高线
    x,y:z的坐标
    z:结果
    alpha:透明度
    levels:等高线得值
            int:绘制 n+1得轮廓线
            阵列:绘制制定得轮廓线的颜色
            要在vmin和vmax之间
    cmap:调色板
    vmin:颜色的最大值
    vmax:颜色得最小值
    """
    contours=ax.contourf(xx,yy,Z,alpha=0.3,levels=np.arange(n_classes+1)-0.5,cmap=cmap,clim=(y.min(),y.max()),zorder=1)
    ax.set(xlim=xlim,ylim=ylim)

#调用可视化函数
visualize_classifier(DecisionTreeClassifier(),X,y)
决策树的图形化.png

相关文章

  • 0#05决策树

    0x00 数据准备 我们还是使用之前得那个气球模型,用来笔算 或者使用make_blobs自动生成一些聚类数据: ...

  • 机器学习6-决策树

    一. 决策树概述 1.1 什么是决策树 决策树输入: 测试集决策树输出: 分类规则(决策树) 1.2 决策树算法概...

  • 决策树

    1、决策树 决策树学习通常包括3个步骤: 特征选择。 决策树生成。 决策树剪枝。 决策树的学习目标是:根据给定的训...

  • 决策树

    决策树 决策树模型与学习 特征选择 决策树的生成 决策树的剪枝 CART 算法 决策树模型呈树形结构,在分类问题中...

  • 决策树算法总结

    目录 一、决策树算法思想 二、决策树学习本质 三、总结 一、决策树(decision tree)算法思想: 决策树...

  • 机器学习 - 决策树算法[一]

    1 决策树模型与学习 1.1 决策树模型 决策树定义: 分类决策树模型是一种描述对实例进行分类的树形结构。决策树由...

  • 机器学习系列(三十六)——回归决策树与决策树总结

    本篇主要内容:回归决策树原理、回归树学习曲线、决策树总结 回归决策树原理 回归决策树树是用于回归的决策树模型,回归...

  • [机器学习]决策树

    决策树 @(技术博客)[机器学习, 决策树, python] 学习决策树首先要搞清楚决策树是什么(what),在弄...

  • 经典机器学习系列之【决策树详解】

      这节我们来讲说一下决策树。介绍一下决策树的基础知识、决策树的基本算法、决策树中的问题以及决策树的理解和解释。 ...

  • 第5章 决策树

    内容 一、决策树内容简介 二、决策树的模型与学习 三、特征选择 四、决策树生成 五、决策树剪枝 六、CART算法 ...

网友评论

      本文标题:0#05决策树

      本文链接:https://www.haomeiwen.com/subject/yzotnftx.html