机器学习之分类-决策树随机森林

news2024/11/14 15:08:49

决策树

原理(信息论)

  • 信息熵

    • 信息:消除随机不定性的东西
    • 信息熵公式,单位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=1n(P(xi)logbP(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(DA)H(D,A)=i=1nDDiH(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_)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/99290.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Arthas常用命令和实践分享

一、序言 通常,本地开发环境无法访问生产环境。在实际工作中,我们会经常遇到在客户现场出现各种奇怪的问题,想要查看具体某个具体的对象,可能要打镜像,还要走银行内部的流程,整体很耗费时间,而…

【Python机器学习】Mean Shift、Kmeans聚类算法在图像分割中实战(附源码和数据集)

需要源码和数据集请点赞关注收藏后评论区留言私信~~~ Mean Shift算法是根据样本点分布密度进行迭代的聚类算法,它可以发现在空间中聚集的样本簇。簇中心是样本点密度最大的地方。 Mean Shift算法寻找一个簇的过程是先随机选择一个点作为初始簇中心,然后…

容器网络访问

网络分类 docker网络解决方案基于openstack平台,后演化为两派:一个是docker原生的CNM(Container Network Model),另一个是兼容性更好的CNI(Container Network Interface) 单主机网络&#xff1…

【博学谷学习记录】超强总结,用心分享|架构师-容器编排 Kubernetes简介

文章目录一、k8s简介二、核心概念2.1 节点2.1.1 Master 节点2.1.2 Node2.2 Pod2.3 Replica Set2.4 Service2.5 Namespace一、k8s简介 k8s是市场上最好的容器编排工具之一。 Kubernetes 是一个开源项目,用于统一管理容器化的应用集群。 Kubernetes 负责在大规模服务…

疫苗预约系统

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字):

【AIOT】串口操作基于PyQT窗口工具编写

1. Serial Type 1.1. 物理接口形式 UART接口:通用异步收发器(Universal Asynchronous Receiver/Transmitter),UART是串口收发的逻辑电路,这部分可以独立成芯片,也可以作为模块嵌入到其他芯片里,单片机、S…

【机器学习---03】感知机模型

文章目录1. 感知机模型是什么?有什么作用?2. 三要素2.1 模型2.2 策略2.3 算法1. 感知机模型是什么?有什么作用? 定义:感知机模型是建立将训练数据完全划分为2类的超平面。 注意: 由于感知机只关心将样本分开…

清越科技将开启申购:预计募资约8亿元,高裕弟为实际控制人

12月19日,苏州清越光电科技股份有限公司(下称“清越科技”,SH:688496)将开启申购。据贝多财经了解,清越科技本次上市的发行价格为9.16元/股,发行数量为9000万股,募资总额约为8.24亿元&#xff0…

深入哈希结构

目录 一、哈希结构概念 二、哈希冲突 三、哈希函数 3.1 哈希函数设计原则 3.2 常见哈希函数设计方法 1. 直接定址法--(常用) 2. 除留余数法--(常用) 3. 平方取中法 4. 折叠法 5. 随机数法 6. 数学分析法 3.3 处理key的局限性问题 四、通过闭散列解决哈希冲突 4.1…

GeoServer安装MBTiles插件

GeoServer安装MBTiles插件 之前介绍过GeoServer使用mvt插件来生成矢量切片,这种mvt切片本质上还是前台加载GeoJson数据,数据是由前端进行渲染加载的,数据存储在浏览器内存中,前台会承担渲染的压力,数据量过大的话&…

数字电子技术(六)时序逻辑电路

时序逻辑电路时序逻辑概述时序逻辑电路特点基本方程组时序逻辑电路的分类自启动同步时序逻辑电路的分析方法(*考点)分析步骤例题分析常用的时序逻辑电路模块寄存器与移位寄存器计数器二进制计数器十进制计数器任意进制计数器(*考点&#xff0…

Python -- 高阶函数

目录 1.递归函数 2.匿名函数 3.高阶函数 3.1 定义一个变量指向函数 3.2 函数作为另一个函数的参数 3.3 函数作为另一个函数的返回值 1.递归函数 什么是递归函数? 如果一个函数在内部不调用其它的函数,而是自己本身的话,这个函数就是递归…

【SVM时序预测】基于matlab粒子群算法优化支持向量机PSO-SVM期贷时序数据预测【含Matlab源码 2289期】

⛄一、PSO-SVM介绍 1 SVM SVM是Vapnik提出的一种分类技术,这一技术具有坚实的统计理论基础。SVM可以将原始的数据映射到高维且线性可分的空间,扩展了线性不可分的样本数据,它是使用核函数将线性不可分转换为线性可分。 如果问题为线性不可分…

计算机毕业设计springboot+vue+elementUI进销存管理信息系统

项目介绍 本次系统设计是一个纺织企业进销存管理信息系统,主要目的是为了提升绿 岩纺织科技有限公司的进销存管理能力,实现绿岩纺织科技有限公司的采购/加 工管理、仓库管理、销售管理等功能。 1.基本信息模块 ;1;商品管理:主要包含商品信息的展示以及添加商品功能。…

Java+MySQL基于SSM的在线论坛交流系统

信息和交流是一个一直伴随着人类一生的话题,从人类诞生开始就已经拥有了这一概念,无论是远古时候的打猎还是现代化的多样化合作都离不开信息和交流。随着时代的积累,人们要面对的信息量也越来越大,任何一个人体单位的人类都不可能涉及到全部的知识,这就需要大家不断的进行交流才…

springboot之多数据源---1

一、多数据源的典型使用场景 在实际开发中,经常可能遇到在一个应用中可能需要访问多个数据库的情况。以下是两种典型场景: 1 业务复杂(数据量大) 数据分布在不同的数据库中,数据库拆了, 应用没拆。 一个公司…

Git 分布式版本控制工具 05SSH免登陆:如何使用SSH如何免密登录服务器~

6 ssh免登陆 SSH是目前比较可靠的专为远程登录会话和其他网络服务提供安全的协议。不同主机之间在进行通信时,一般都是需要输入密码进行验证, ssh免密码之后,只要通过指定主机地址和端口号就可以实现不同的计算机之间访问时,不需…

基于web的网上图书商城的设计与实现/图书购物系统

摘 要 本毕业设计的内容是设计并且实现一个基于JSP技术的网上图书商城。它是在Windows下,以MYSQL为数据库开发平台,Tomcat网络信息服务作为应用服务器。网上图书商城的功能已基本实现,主要包括个人中心、图书分类管理、用户管理、图书信息管…

Android12指纹框架完全解析(一)

前言:自从Android6.0开始Google官方出了标准的Android指纹框架,结束了各家指纹厂商各自为政的局面,推动了电容指纹在Android的发展;自从2017年新思的屏下指纹方案横空出世,后边汇顶等指纹厂商跟进,Android …

【Linux】shell命令以及运行原理

shell命令1.用户不能直接使用操作系统2.Linux是一个操作系统3.在软件层面操作Linux系统4.shell运行原理1.用户不能直接使用操作系统 首先在讲shell命令之前,我们要知道 “用户是不能直接在操作系统上操作的,只能在操作系统之上,也就是软件层面…