人工智能学习7(决策树算法)

news/2024/8/22 1:41:24

编译工具:PyCharm

文章目录

      • 编译工具:PyCharm
  • 决策树算法
    • 信息熵
      • 信息熵例题计算:
    • 信息增益(决策树划分依据之一ID3)
      • 信息增益例题计算:
    • 信息增益率(决策树划分依据之一C4.5)
    • 基尼值和基尼指数(决策树划分依据之一CART)
    • 多变量决策树:OC1
  • 剪枝
  • 决策树算法api案例:泰坦尼克号存活预测

决策树算法

决策树:是一种树形结构,其中每个内部节点表四一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点表示一种分类结果,本质是一颗由多个判断节点组成的树。

信息熵

“信息熵”时度量原本集合程度最常用的一种指标。
1.当系统的有序状态一致时,数据越集中的地方熵值越小,数据越分散的地方熵值越大
2.当数据量一致时,系统越有序熵值越低;系统越混乱/分散熵值越高
在这里插入图片描述

信息熵例题计算:

在这里插入图片描述

信息增益(决策树划分依据之一ID3)

信息增益:以某特征划分数据集前后的熵的差值。可以表示原本集合的不确定性熵越大,原本的不确定性就越大。因此可以使用划分前后集合熵的差值来衡量使用当前特征对于样本集合D划分效果的好坏。
在这里插入图片描述

信息增益例题计算:

在这里插入图片描述
整体流失的信息熵:
在这里插入图片描述
条件信息熵:
在这里插入图片描述
信息增益计算:
在这里插入图片描述
同样,求解活跃度的信息增益:
在这里插入图片描述

信息增益率(决策树划分依据之一C4.5)

信息增益准则对可取值数目较多的属性有所偏好,如在信息增益案例题中,我们计算时忽略了第一列即编号列,实际上信息增益会偏向选择第一列(类别有15种)、第三列(类别有3种)…。但是显然第一列没有计算的必要。
为了减少这种偏好可能带来的不利影响,C4.5决策树算法不直接使用信息增益,而是使用**“增益率”选择最优划分属性**。

增益率信息增益(D,a) / 属性a的"固有值"
在这里插入图片描述
对信息增益的案例进行增益率的计算:
在这里插入图片描述
https://www.bilibili.com/video/BV1pf4y1y7kw/?p=106&spm_id_from=pageDriver&vd_source=3918c4e379f5f99c5ae95581d2cc8cec

基尼值和基尼指数(决策树划分依据之一CART)

基尼值Gini(D):从数据集D中随机抽取两个样本,器类别标记不一致的概率。所以Gini(D)值越小,数据集D的纯度越高

基尼值:
在这里插入图片描述

基尼指数:
在这里插入图片描述

多变量决策树:OC1

ID3、C4.5、CART在特征选择的时候都是选择一个最优的特征来分类决策,但是不应该只由某一个特征进行决定,应该由一组特征决定,OC1就是这样的。

剪枝

剪枝时决策树学习算法中对付“过拟合”的主要手段。

剪枝分为预剪枝和后剪枝

决策树算法api案例:泰坦尼克号存活预测

数据集:https://hbiostat.org/data/repo/titanic.txt

# 决策树算法api
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split        # 进行数据集划分
from sklearn.feature_extraction import DictVectorizer
from sklearn.tree import DecisionTreeClassifier

# 读取数据
# titan = pd.read_csv("https://hbiostat.org/data/repo/titanic.txt")
titan = pd.read_csv("./data/titanic.csv")
print(titan.describe())

# 获取样本和目标值
# 这里取pclass社会等级、age年龄、sex性别作为特征值
# 取survived存活为目标值
x = titan[["pclass","age","sex"]]
y = titan["survived"]

# 缺失值处理:对age为空的用平均值替换
x['age'].fillna(value=titan["age"].mean(),inplace=True)
print(x.head())

# 数据集划分
x_train,x_test,y_train,y_test = train_test_split(x,y,random_state=22,test_size=0.2)
# 特征抽取(字典特征提取)
x_train = x_train.to_dict(orient="records")
x_test = x_test.to_dict(orient="records")
tranfer = DictVectorizer()
x_train = tranfer.fit_transform(x_train)
x_test = tranfer.fit_transform(x_test)

# 模型训练(决策树)
# 在实例化的时候可以添加 max_depth 来提高评估效率score
estimator = DecisionTreeClassifier()
estimator.fit(x_train,y_train)

# 模型评估
y_pre = estimator.predict(x_test)
print(y_pre)
print(estimator.score(x_test,y_test))

# 决策树可视化


在这里插入图片描述

在这里插入图片描述


http://lihuaxi.xjx100.cn/news/1863621.html

相关文章

Ubuntu下进行串口卡驱动

Ubuntu下安装串口卡驱动 1.下载厂家提供的驱动上传至本地电脑 cd (驱动路径下) 2.Lspci -v 查看电脑串口卡信息 3.下载编译包 sudo apt-get update sudo apt-get install build-essential linux-headers-$(uname -r) 4.编译驱动 make sudo make i…

python中的进制转换和原码,反码,补码

python中的进制转换和原码,反码,补码 计算机文件大小单位 b bit 位(比特) B Byte 字节 1Byte 8 bit #一个字节等于8位 可以简写成 1B 8b 1KB 1024B 1MB 1024KB 1GB 1024MB 1TB 1024GB 1PB 1024TB 1EB 1024PB 进制分类 二进制:由2个数字组成,有0 和 1 pyth…

Linux系统安装Python3环境

1、默认情况下,Linux会自带安装Python,可以运行python --version命令查看,如图: 我们看到Linux中已经自带了Python2.7.5。再次运行python命令后就可以使用python命令窗口了(CtrlD退出python命令窗口)。 2…

新的 BLUFFS 攻击导致蓝牙连接不再私密

蓝牙是一种连接我们设备的低功耗无线技术,有一个新的漏洞需要解决。 中间的攻击者可以使用新的 BLUFFS 攻击轻松窥探您的通信。 法国研究中心 EURECOM 的研究员 Daniele Antonioli 演示了六种新颖的攻击,这些攻击被定义为 BLUFFS(蓝牙转发和…

前端初学者的Ant Design Pro V6总结(下)

前端初学者的Ant Design Pro V6总结(下) 文章目录 前端初学者的Ant Design Pro V6总结(下)umi 请求相关一个能用的请求配置Service层 TS 类型规范Service层 函数定义umi 请求代理 Proxy umi/max 简易数据流useModel 没有类型提示&…

hnust 湖科大 创业基础考察课程结课作业 创业计划书+路演PPT 资源下载

hnust 湖科大 创业基础考察课程结课作业 创业计划书 资源下载 资源详尽,图文并茂,开箱即用,附赠若干模板 资源预览图 创业计划书word 路演PPT 赠品 下载链接 链接:https://pan.baidu.com/s/1p1n6qwM5Jx6bB96ifAJmiw?pwd1111 …

GPC-数据鉴别(DAP)模式验证

概述: 9.2.1 数据鉴别(DAP)模式验证 应用提供方可以要求对其加载到卡片的应用代码进行完整性和真实性的验证。在本规范中详述的具备“DAP 验证权限”的应用提供方安全域,代表应用提供方提供了这种验证服务。授权管理者可以要求对所有加载到卡片的应用…

【ArcGIS Pro微课1000例】0047:深度学习--棕榈树提取全流程

一、创建训练样本 对汤加科洛瓦伊种植园每棵棕榈树的健康状况进行清查和评估,这需要花费大量的时间和劳动力。 为简化此过程,将在 ArcGIS Pro 中使用深度学习模型来识别树木,然后根据植被绿度的测量值计算其健康状况。 第一步是找到显示汤加科洛瓦伊的影像,该影像具有足够…