首页 > 其他分享 >机器学习之决策树

机器学习之决策树

时间:2024-04-30 16:22:58浏览次数:16  
标签:剪枝 机器 cancer 学习 算法 breast test 决策树

一、决策树定义:

决策树是一种基于树结构的机器学习算法,用于建立一系列的规则来对数据进行分类或预测。

二、决策树特征选择

2.1 特征选择问题

在决策树的构建过程中,特征选择是一个关键的步骤,它决定了每个节点应该选择哪个特征来进行分裂。

2.2 信息增益

信息增益是一种常用的特征选择准则,它衡量了在特征给定的条件下,分类结果的不确定性减少的程度。

2.2.1 熵

熵是信息论中用来表示随机变量不确定性的度量,它的计算公式为:

[H(X) = -\sum_{i=1}^{n} P(x_i) \log_2 P(x_i)]

其中,(P(x_i)) 表示随机变量 (X) 取值为 (x_i) 的概率。

2.2.2 信息增益

信息增益表示在特征 (A) 给定的条件下,分类结果的熵减少的程度,它的计算公式为:

[Gain(A) = H(D) - H(D|A)]

其中,(H(D)) 表示数据集 (D) 的熵,(H(D|A)) 表示在特征 (A) 给定的条件下,数据集 (D) 的条件熵。

三、决策树的生成

决策树的生成是指根据训练数据集生成决策树的过程,常用的算法包括ID3算法和C4.5算法。

3.1 ID3算法

ID3算法是一种基于信息增益准则的决策树生成算法,其主要步骤包括:

3.1.1 理论推导

ID3算法的核心思想是选择能够最大化信息增益的特征进行分裂。
3.2 C4.5算法

C4.5算法是ID3算法的改进版,它使用信息增益比来解决ID3算法的缺陷。

3.2.1 理论推导

C4.5算法在选择特征时,使用信息增益比来代替信息增益,以解决特征取值数目较多时信息增益偏向于取值数目较多的特征的问题。
四、决策树的剪枝

决策树的剪枝是为了防止过拟合,常用的剪枝算法包括预剪枝和后剪枝。

4.1 原理

剪枝的原理是通过降低树的复杂度来提高泛化能力,从而减少过拟合的风险。

4.2 算法思路:

预剪枝在决策树构建过程中,在每次进行分裂前先进行判断,若判断结果表明分裂会导致过拟合,则停止分裂。

五、CART算法

CART(Classification and Regression Trees)算法是一种既能用于分类又能用于回归的决策树算法。

5.1 CART生成

CART生成算法包括分类树的生成和回归树的生成。

5.1.1 回归树的生成

回归树的生成目标是将数据集划分成尽可能纯的子集,使得每个子集内的样本的目标变量的方差尽可能小。

5.1.2 分类树的生成

分类树的生成目标是将数据集划分成尽可能纯的子集,使得每个子集内的样本属于同一类别。

5.1.3 CART生成算法

CART生成算法主要通过递归地进行二分来生成树,直到满足停止条件为止。

5.2 CART剪枝

CART剪枝通过调整树的复杂度来提高泛化能力,常用的剪枝方法包括代价复杂度剪枝(Cost Complexity Pruning)。
六、代码

6.1 代码
以下用分类树举例
以下是决策树的简单代码示例:
`#数据准备
from sklearn.datasets import load_breast_cancer
breast_cancer = load_breast_cancer()

分离数据

breast_cancer
x=breast_cancer.data
y=breast_cancer.target

训练数据

from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(x,y,random_state=33,test_size=0.3)

数据标准化

from sklearn.preprocessing import StandardScaler
breast_cancer_ss = StandardScaler()
x_train = breast_cancer_ss.fit_transform(x_train)
x_test = breast_cancer_ss.transform(x_test)

分类树

from sklearn.tree import DecisionTreeClassifier
dtc = DecisionTreeClassifier()
dtc.fit(x_train,y_train)

dtc_y_predict = dtc.predict(x_test)

from sklearn.metrics import classification_report
k=0
j=0
for i in y_test:
if i!=dtc_y_predict[j]:
k=k+1
j=j+1
print(k)
print('预测结果:\n:',dtc_y_predict)
print('真是结果:\n:',y_test)
print('Accuracy:',dtc.score(x_test,y_test))
print(classification_report(y_test,dtc_y_predict,target_names=['benign','malignant']))`
6.2结果

标签:剪枝,机器,cancer,学习,算法,breast,test,决策树
From: https://www.cnblogs.com/ls111/p/18168245

相关文章

  • 自动批量实现linux机器ssh免密shell脚本
    要同时指定SSH端口和密码来实现非交互式地使用ssh-copy-id,可以使用sshpass来实现。sshpass是一个用于通过非交互方式输入密码的工具。下面是一个示例脚本,它使用sshpass、ssh-copy-id以及指定的端口号来实现这一目标:1#!/bin/bash23#检查是否提供了目标主机列表文件4i......
  • 38.Vue路由的简单学习整理
    关于vue路由这是关于前端的知识我大致就理解为其为跳转规则html中跳转想一下jsp跳转或者直接a标签跳转这个为人家规范的跳转这是vscode用到一些小插件{图标和idea键盘操作挺不错的}当然你需要vue插件否则无法识别vue还有就是node.js的安装就不说了首先分为前......
  • "基础模型时代的机器人技术" —— Robotics in the Era of Foundation Models
    翻译:2023年是智能机器人规模化的重要一年!对于机器人领域之外的人来说,要传达事物变化的速度和程度是有些棘手的。与仅仅12个月前的情况相比,如今人工智能+机器人领域的大部分景观似乎完全不可识别。从学术界到初创公司再到工业研究实验室,2023年带来了一波研究进展,迫使许多人更新了......
  • 数论学习笔记 (3):因数与倍数
    \(\texttt{godmoo}\text{}\texttt{の}\text{}\texttt{数论学习笔记之}\text{}\boxed{因数与倍数}\)定义因数/约数,倍数:若\(d\midn\),则\(d\)是\(n\)的因数,\(n\)是\(d\)的倍数。公因数/公约数,公倍数:公共的因数/约数、倍数。最大公因(约)数:\(GreatestCommonDi......
  • 人机协同的半自动人形机器人 —— Covariant公司的RFM-1机器人
    Covariant公司的RFM-1机器人实现了一个极为有意思的功能,那就是在机器人执行任务的过程中如果遇到无法处理的情况下就会停止下来然后等待人类的语言指示,比如:夹具向上移动2cm,更换更大型号的夹具,等待,可以说该公司在目前人工智能算法还不能完全胜任任务的情况下引入了人类协助的方法,该......
  • 机器学习实践第三篇——决策树构建
    一.什么是决策树决策树是一种基本的机器学习算法,其核心思想是通过对数据集进行递归的二分来构建一棵树形结构,每个节点代表一个属性测试,每个分支代表一个测试结果,每个叶子节点代表一个类别或者值。决策树的关键点包括:可解释性:决策树的模型结构直观易懂,可以被解释为一......
  • go学习01
    加载网页文件夹和加载静态资源文件路径:<linkrel="stylesheet"href="/static/css/style.css"><scriptsrc="/static/js/common.js"></script>//加载网页文件夹ginServer.LoadHTMLGlob("templates/*")//加载静态资源......
  • pytest 学习 - 00 环境安装配置
    前言pytest是一个非常好用且成熟的全功能Python测试框架,个人觉得比传统的Unitest好多用了,现在面试如果写只会Unitest会被鄙视的。主要有以下特点:1.简单灵活,容易上手,参数化灵活。2.测试用例支持很多机制像skip、xfail、自动失败重试等处理。3.能够......
  • m基于Yolov2深度学习网络的智能零售柜商品识别系统matlab仿真,带GUI界面
    1.算法仿真效果matlab2022a仿真结果如下:  2.算法涉及理论知识概要       YOLO(YouOnlyLookOnce)是一种实时的目标检测算法,YOLOv2则是其改进版本,由JosephRedmon和AliFarhadi于2016年提出。YOLOv2采用了端到端的方式直接从整幅图像预测边界框和类别概率,极大......
  • Python 学习笔记
    1、Python简介设计哲学:强调代码的可读性和简洁的语法(尤其是用空格缩进来定义代码块,而不是使用大括号或关键词)。应用领域:Web开发、数据科学、人工智能、科学计算、自动化脚本等。参考文档:Python简介2.基本语法解释器:Python代码可以通过Python解释器直接运行,也可以作为脚本......