python机器学习之决策树

决策树整体上就是类似于一棵充满if-else的树。

信息:用来消除随机不确定性的东西。

信息熵,单位是比特,可以用来代表不确定性

策略树一种划分的依据是:信息增益

:知道某种特征之后,不确定性减少的最多,就可以先看这个特征,即这个特征的信息增益最大

g(D,A)=H(D)-H(D/A)

H(D)是信息熵,H(D/A)是条件熵,g(D,A)可以看成特征A的信息增益。

决策树太大,太深,会过于拟合,造成泛化能力不强

优点:简单,可视化-可解释能力强,不像深度学习,那么深,很多都在做特征提取,都不知道提取的是什么,所以深度学习会被叫成黑盒子。

缺点:容易产生过拟合。

改进:1.剪枝cart算法

           2.随机森林

下面以决策树对鸢尾花进行分类

from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier,export_graphviz
def decision_iris():
    """
    用决策树对鸢尾花进行分类
    :return:
    """
    #1.获取数据集
    iris=load_iris()
    #2.划分数据集
    x_train,x_test,y_train,y_test=train_test_split(iris.data,iris.target)
    #3.使用决策树
    estimator=DecisionTreeClassifier(criterion="entropy")#entropy 表示以信息增益的方式
    estimator.fit(x_train,y_train)
    #4.模型评估
    y_predict = estimator.predict(x_test)
    print("y_predict:\n", y_predict)
    print("直接比对真实值和预测值:\n", y_test == y_predict)
    # 2.计算准确率
    score = estimator.score(x_test, y_test)
    print("准确率为:\n", score)
    #可视化决策树
    export_graphviz(estimator,out_file="iris_tree.dot",feature_names=iris.feature_names)
    return None

结果为:

除此之外,结果还有一个可视化文件iris_tree.dot,会在文件列表中,打开之后是这样的形式:

这个可视化文件并没有以树的方式进行展示,这时需要打开一个网站:webgraphviz.com

然后粘贴到里面,点击Generate Graph,会生成树的形状,如

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值