决策树

原理(信息论)

  • 信息熵

    • 信息:消除随机不定性的东西
    • 信息熵公式,单位bit

    H ( X ) = − ∑ i = 1 n ( P ( x i ) log ⁡ b P ( x i ) ) H(X)=-\sum^{n}_{i=1}(P(x_i)\log_{b}P(x_i)) H(X)=−i=1∑n​(P(xi​)logb​P(xi​))

  • 信息增益

    • 特征A对训练数据集D的信息增益g(D,A)定义为集合D的信息熵H(D)与特征A给定条件下D的信息条件熵H(D|A)之差,即
      g ( D , A ) = H ( D ) − H ( D ∣ A ) H ( D , A ) = ∑ i = 1 n ∣ D i ∣ ∣ D ∣ H ( D i ) g(D,A)=H(D)-H(D|A)\\ H(D,A)=\sum^n_{i=1}\frac{|D_i|}{|D|}H(D_i) g(D,A)=H(D)−H(D∣A)H(D,A)=i=1∑n​∣D∣∣Di​∣​H(Di​)
  • 决策树的划分依据:信息增益

    • 其他

      • ID3: 信息增益 最大准则
      • C4.5: 信息增益比 最大准则
      • CART: 基尼系数 最小准备 在sklearn中可以选择划分的默认原则
        • 优势:划分更加细致
  • 优缺点

    • 优点

      • 简单的理解和解释,树木可视化
    • 缺点
      • 可能创建过于复杂的树 ,容易过拟合
    • 改进:剪枝,随机森林

API

class sklearn.tree.DecisionTreeClassifier(criterion='gini',max_depth=None, random_state=None)
# criterion:默认'gini',可以选择信息熵增益 ‘entropy’
  • 代码示例 : 鸢尾花预测

    from sklearn.tree import DecisionTreeClassifier
    from sklearn.datasets import load_iris
    from sklearn import tree
    from sklearn.model_selection import train_test_split
    iris=load_iris()
    x_train,x_test,y_train,y_test = train_test_split(iris.data, iris.target)
    # 决策树并不需要对数据进行标准化
    estimator = DecisionTreeClassifier(max_depth=3)
    estimator.fit(x_train,y_train)
    y_predict = estimator.predict(x_test)
    print(y_test==y_predict)
    print(y_predict)
    score=estimator.score(x_test,y_test)
    print('score=',score)
    

决策树可视化

from matplotlib import pyplot as plt
#...
fig=plt.figure()
tree.plot_tree(estimator)
plt.show()

集成学习方法之随机森林

原理

  • 随机森林

    • 包含多个决策树的分类器
    • 随机
      • 训练集随机

        • BootStrap 随机有放回的抽样
      • 特征随机
        • 从M个特征中随机你抽取m个特征(M>>m)
  • 总结
    • 具有极好的准确率
    • 能够有效地运行在大数据集上,而且不需要降维

API

sklearn.ensemble.RandomForestClassifier()
  • n_estimators 决策树的数量
  • criteria 特征选择方法,默认gini
  • max_features='auto'每个决策树的最大特征数量
    • auto max_features=sqrt(n_features)
    • sqrt max_features=sqrt(n_features)
    • log2 max_features=log2(n_features)
    • None max_features=n_features
  • bootstrap=True 使用放回抽样
  • min_samples 节点划分最少样本数
  • min_samples_leaf 叶子节点的最小样本数

示例

使用随机森林和网格搜索预测鸢尾花

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.model_selection import GridSearchCV
data=load_iris()
x_train,x_test,y_train,y_test =train_test_split(data.data,data.target)params = {'n_estimators':[10,50,100,200,1000],
'max_depth':[3,5,8,11]}
clf = RandomForestClassifier()
clf = GridSearchCV(clf,param_grid=params,cv=10)
clf.fit(x_train,y_train)
y_predict = clf.predict(x_test)
score=clf.score(x_test,y_test)
print(y_test==y_predict)
print(score)
print(clf.best_params_,clf.best_score_)

机器学习之分类-决策树随机森林相关推荐

  1. 机器学习实战之分类算法(K-近邻/朴素贝叶斯/决策树/随机森林)

    机器学习分类算法 1. 机器学习算法简介 1.1 按照学习方式分类 1.2 区别 1.3 关于监督学习中的分类与回归区别 1.4 机器学习开发流程 2. 数据集介绍与划分 2.1 sklearn数据集 ...

  2. 【算法精讲】集成分类与随机森林

    ONE 集成分类 01 什么是集成分类 集成分类是集成学习的一种,先讲下集成学习是什么. 所谓集成学习,引用一句谚语"三个臭皮匠顶个诸葛亮"最恰当不过. 集成学习就是将多个弱学习器 ...

  3. 决策树随机森林GBDTXGBoost学习笔记以及代码实现

    文章目录 1. 引入 1.1 决策树 1.2 随机森林 1.3 GBDT(Gradient Boosting Decision Tree)梯度提升决策树 1.4 XGBoost(eXtreme Gra ...

  4. 机器学习基础算法之随机森林

    英文原文<The Random Forest Algorithm> 专知 编译<机器学习基础算法之随机森林> [导读]在当今深度学习如此火热的背景下,其他基础的机器学习算法显得 ...

  5. 机器学习算法篇(随机森林树)

    随机森林树: 1.定义: 随机森林只利用多颗决策树对样本进行训练并预测的一种分类器,可回归可分类:随机森林是基于多颗决策树的集成算法,常见决策树算法主要分为: ID3(利用信息增益进行特征选择),C4 ...

  6. 机器学习工具篇_sklearn_随机森林

    1.集成算法概述 Q:随机森林 是一种集成算法 不是一种单独的机器 学习算法 Q:集成算法的目标 考虑多个评估器的建模结果,汇总之后 得到一个综合的结果,以此来获得更好的回归或者分类表现 Q:集成评估 ...

  7. 《菜菜的机器学习sklearn课堂》随机森林应用泛化误差调参实例

    随机森林 随机森林 - 概述 集成算法概述 sklearn中的集成算法 随机森林分类器 RandomForestClassifier 重要参数 控制基评估器的参数 n_estimators:基评估器的 ...

  8. 机器学习-集成学习:随机森林(Random Forest)

    内容参考:https://github.com/NLP-LOVE/ML-NLP/tree/master/Machine%20Learning/3.1%20Random%20Forest​​​​​ 略做 ...

  9. 机器学习——决策树+随机森林

    目录 决策树 认识决策树 决策树的生成 信息的单位--比特 信息熵 决策树的划分依据之一--信息增益 例题--银行贷款分析 决策树的其他分类依据 案例--泰坦尼克号乘客生存分类 决策树的结构.本地保存 ...

最新文章

  1. Javascript原型链
  2. android 九宫格绘制,Android draw9patch.bat 九宫格绘制工具使用
  3. mysql5.7.17主从_MySQL 5.7主从不停机添加新从库
  4. vue-cli-plugin-element的使用
  5. 微信小程序获取用户手机号--官方示例
  6. 1、Locust压力测试环境搭建
  7. 关于Spring的事务Transactional,锁同步,并发线程
  8. HTTP 错误 404.3 – Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。...
  9. HALCON学习之旅(一)
  10. HDU 1251 统计难题
  11. 基于JAVA+SpringMVC+Mybatis+MYSQL的大学生兼职网站
  12. c#如何根据字符串长度获得宽度
  13. 计算机信息管理专业教学改革,计算机信息管理专业实践教学改革探索
  14. matlab处理波动的数据,波动数据时间序列的分析与处理
  15. 苹果手机访问html文件夹,iPhone如何访问Windows的共享文件夹
  16. python全栈测试开发工程师_Python测试开发全栈核心课程 互联网测试工程师必修课...
  17. 谷歌AI中国中心成立,人工智能势不可挡?
  18. Eclipse基础知识
  19. GO+Selenium批量关注各大网站实战 2 (今日头条,批量关注)
  20. Moasure魔尺 | 精装礼盒装开箱过程

热门文章

  1. 我的世界java版地图结构_地图物品格式 - Minecraft Wiki,最详细的官方我的世界百科...
  2. STL中list类的自己简单实现
  3. Vue项目实战之人力资源平台系统(十)图片上传和打印员工信息
  4. vs2010创建Dll例子,并解决运行错误:应用程序正常初始化(0xc000000d)失败。请单击“确定”,终止应用程序。
  5. buuctf 逆向Transform
  6. 看完这组照片,你还敢说自己会PS吗?
  7. 早起的鸟儿有虫吃,早起的虫儿被鸟吃
  8. 预告 | 2021数字经济领航者峰会,零数科技CEO林乐受邀出席并做主题演讲
  9. concat拼接的坑 mysql_详解MySQL拼接函数CONCAT的使用心得
  10. jdbc执行sql出现错误: mismatched input ‘,’ excepting ‘.‘ 应该如何解决?