Python——机器学习之决策树、随机森林、极限森林简单理解

决策树

顾名思义,决策树是基于树结构来进行决策的,在网上看到一个例子十分有趣,放在这里正好合适。现想象一位捉急的母亲想要给自己的女娃介绍一个男朋友,于是有了下面的对话:

这个女孩的挑剔过程就是一个典型的决策树,即相当于通过年龄、长相、收入和是否公务员将男童鞋分为两个类别:见和不见。假设这个女孩对男人的要求是:30岁以下、长相中等以上并且是高收入者或中等以上收入的公务员,那么使用下图就能很好地表示女孩的决策逻辑(即一颗决策树)。
在这里插入图片描述

熵定义为信息的期望值,公式为在这里插入图片描述
简单的理解就是:
分类数目,熵越大,随机变量的不确定性就越大。

ID3算法 / 信息熵

在这里插入图片描述

C4.5算法 / 增益率

在这里插入图片描述

CART算法 / 基尼指数

在这里插入图片描述

在这里插入图片描述

随机森林(Random Forests)

随机森林是一种重要的基于Bagging的集成学习方法,可以用来做分类、回归等问题。

随机森林有许多优点:

  • 具有极高的准确率
  • 随机性的引入,使得随机森林不容易过拟合
  • 随机性的引入,使得随机森林有很好的抗噪声能力
  • 能处理很高维度的数据,并且不用做特征选择
  • 既能处理离散型数据,也能处理连续型数据,数据集无需规范化
  • 训练速度快,可以得到变量重要性排序
  • 容易实现并行化

随机森林的缺点:

  • 当随机森林中的决策树个数很多时,训练时需要的空间和时间会较大
  • 随机森林模型还有许多不好解释的地方,有点算个黑盒模型

极限森林

在随机森林的基础上进行升级。不寻找最有区别的阈值,而是为每个候选特征随机绘制阈值,并且这些随机生成的阈值中的最佳阈值作为划分规则。
极限森林 :1、样本抽样随机 2、每棵树分裂条件随机(不是最好的裂分条件)
决策树,进行分裂的时候,根据信息增益最大进行裂分,刻板
交叉验证:
数据简单,普通算法和复杂算法效果一样。数据预处理非常重要。
如何提升准确率:数据的质量,数据的预处理,算法的提升,参数的调整。

import sklearn.datasets as dt
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier,ExtraTreesClassifier
from sklearn.model_selection import train_test_split,cross_val_score

if __name__ == '__main__':
    #导入鸢尾花数据
    datas=dt.load_iris(True)
    #训练数据和测试数据
    train,test=datas[0],datas[1]
    # 8成训练数据 x_data
    # 2成测试数据 x_test
    # 8成训练结果 y_target
    # 2成真实数据 y_real
    x_data,x_test,y_target,y_real=train_test_split(train,test,test_size=0.2,random_state=1024)

    #三种方式

    #决策树
    dtc=DecisionTreeClassifier(criterion='entropy')
    print("决策树:"+str(cross_val_score(dtc,x_data,y_target,cv=10).mean()))

    #随机森林  只有一颗树 按照熵算出best的树,128份数据进行训练取平均值
    rfc=RandomForestClassifier(n_estimators=128,criterion='entropy')
    print("随机森林:" + str(cross_val_score(rfc, x_data, y_target, cv=10).mean()))


    #极限森林  真正有128颗不同的树,熵不确定时随机构建树
    etc=ExtraTreesClassifier(n_estimators=128,criterion='entropy')
    print("极限森林:" + str(cross_val_score(etc, x_data, y_target, cv=10).mean()))

结果

决策树:0.925
随机森林:0.95
极限森林:0.95

可以看到随机森林和极限森林预测正确率差不多,他们都在本次测试中由于决策树

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值