【机器学习】决策树 No.3

1、决策树之信息论基础

决策树思想来源非常朴素,程序设计中的条件分支结构(if-else),最早的决策树就是利用这类结构分割数据的一种分类学习方法。

例:

银行贷款例子(使用决策树划分是否贷款),此处特征为两个:房子,工作:

香农,信息论创始人,1948年发表论文-通信的数学原理,奠定了现代信息论的基础。

信息的单位:比特

信息熵和消除不确定性相关联。

2、决策树的划分及案例

(1)决策树划分依据

信息增益:

示例:贷款申请如下表:

(2)常见决策树使用的算法

ID3:信息在增益最大的准则

C4.5:信息增益比 最大的准则

CART:

       回归树:平方误差最小

       分类树:基尼系数最小的准则,在sklearn中可以选择划分的默认原则

(3)sklearn决策树API:

sklearn.tree.DecisionTreeClassifier

示例:

数据: http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt

处理流程:

实现代码:

from sklearn.tree import DecisionTreeClassifier , export_graphviz
from sklearn.feature_extraction import DictVectorizer
# from sklearn.cross_validation import train_test_split  # 已经更新为下边api
from sklearn.model_selection import train_test_split
import pandas as pd

def dicision():
    '''
    对泰坦尼克号预测生死
    数据地址:http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt
    :return None
    '''

    # 读取数据
    titan = pd.read_csv("http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt")

    # 处理数据,找出特征值和目标值
    x = titan[["pclass", 'age', 'sex']]    #特征值
    y = titan[['survived']]                # 目标值

    # print(x)
    # 缺失值处理
    x['age'].fillna(x['age'].mean(), inplace=True)

    # 分割数据集到训练集合,测试集合.数据随机切分
    x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25)

    # 进行处理(特征工程)特征->类别-> one-hot编码
    dict = DictVectorizer(sparse=False)
    x_train = dict.fit_transform(x_train.to_dict(orient='records'))

    print(dict.get_feature_names())

    x_test = dict.fit_transform(x_test.to_dict(orient='records'))

    # print (x_train)

    # 使用决策树进行预测
    dec = DecisionTreeClassifier(max_depth=8)  # 树深度影响预测结果

    dec.fit(x_train, y_train)

    # 预测准确率
    print("预测的准确率: ", dec.score(x_test, y_test))

    # 导出决策树的结构
    export_graphviz(dec, out_file="C:\\Users\\Administrator\\Desktop\\机器学习\\tree.dot", feature_names=['年龄', 'pclass=1st', 'pclass=2nd', 'pclass=3rd', 'sex=女性', 'sex=男性'])

    return None



if __name__== "__main__":
    dicision()

执行结果:

['age', 'pclass=1st', 'pclass=2nd', 'pclass=3rd', 'sex=female', 'sex=male']

预测的准确率:  0.7963525835866262

安装:graphviz 观察树的结构

下载地址:https://graphviz.gitlab.io/_pages/Download/Download_windows.html

Windows下安装参考:https://www.cnblogs.com/onemorepoint/p/8310996.html

进入windows命令行界面,cd 切换到tree.dot所在的路径,执行

dot -Tpng tree.dot -o tree.png

 

C:\Users\Administrator\Desktop\机器学习>F:\Graphviz\bin\dot.exe -Tpng tree.dot -o tree.png

 

C:\Users\Administrator\Desktop\机器学习>

转化后树的结构如图:

 

(4)决策树的优缺点及改进

优点:简单的理解和解释,树木可视化;需要很少的数据准备,其他技术通常需要数据归一化。

缺点:决策树学习者可以创建不能很好地推广数据的过于复杂的树,这被称为过拟合

改进:减枝cart算法(决策树API中已经实现);随机森林。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C-Jonn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值