当前位置: 首页 > news >正文

决策树(Python)

决策树(Decision Tree)

        为达到目标,根据一定的条件进行选择的过程,就是决策树,常用于分类

构成元素是结点和边

  • 结点:根据样本的特征作出判断,根节点、叶节点。
  • 边:指示方向。

衡量标准——熵

        这里熵表示样本种类的丰富性,样本种类越多越混乱,熵越大;假若全部属于同一类,则熵等于零。

构造的基本思路

        随着层数增加,让熵快速降低,降低速率越快,效率越高。

缺点——过拟合

        解决——剪枝

  1.         预剪枝:达某条件就停止
  2.         后剪枝:先得树,再加上限制条件(如叶节点个数)进行剪枝。

Python代码

from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
import pandas as pd# 读取数据
data = pd.read_csv('data.csv')# 假设数据中的最后一列是目标变量,其余列是特征
X = data.iloc[:, :-1]
y = data.iloc[:, -1]# 将数据集拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 创建决策树分类器
dt_classifier = DecisionTreeClassifier(random_state=42)# 训练模型
dt_classifier.fit(X_train, y_train)# 在测试集上进行预测
y_pred = dt_classifier.predict(X_test)
print(y_pred)
print(y_test)
# 评估模型准确性
accuracy = accuracy_score(y_test, y_pred)
print(f'Model Accuracy: {accuracy}')

附:构造样例数据的实例代码

# 以通过学生的数学和英语成绩预测是否通过为例
import pandas as pd
import numpy as np
df = pd.DataFrame({'Math_Score': [np.random.randint(40, 101) for x1 in range(100)],'English_Score': [np.random.randint(40, 101) for x2 in range(100)],'Pass': [np.random.randint(0, 2) for x3 in range(100)],
})
df.to_csv('data.csv')

相关文章:

  • [第二章—Spring MVC的高级技术] 2.3 处理异常
  • 算法训练营第五十七天|647. 回文子串 516.最长回文子序列
  • 252.【2023年华为OD机试真题(C卷)】局域网中的服务器个数(优先搜索(DFS)-JavaPythonC++JS实现)
  • [已解决]504 Gateway Time-out 网关超时
  • 机器学习第一个项目-----鸢尾花及报错解决
  • unity学习笔记----游戏练习06
  • ZigBee学习——浅析协议栈
  • 网络协议与攻击模拟_08DHCP协议
  • Object.prototype.toString.call个人理解
  • Docker数据管理
  • BTC交易模式 - UXTO - 工具整理
  • 鸿蒙开发案例002
  • 数据结构笔记1
  • php 文件上传
  • Docker部署
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • JavaScript新鲜事·第5期
  • Python3爬取英雄联盟英雄皮肤大图
  • RxJS: 简单入门
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • select2 取值 遍历 设置默认值
  • spark本地环境的搭建到运行第一个spark程序
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • Vue--数据传输
  • 测试如何在敏捷团队中工作?
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 试着探索高并发下的系统架构面貌
  • 学习ES6 变量的解构赋值
  • 数据库巡检项
  • #Lua:Lua调用C++生成的DLL库
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (三) diretfbrc详解
  • (转)项目管理杂谈-我所期望的新人
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .htaccess 强制https 单独排除某个目录
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • [.NET]桃源网络硬盘 v7.4
  • [【JSON2WEB】 13 基于REST2SQL 和 Amis 的 SQL 查询分析器
  • [2008][note]腔内级联拉曼发射的,二极管泵浦多频调Q laser——
  • [C/C++]关于C++11中的std::move和std::forward
  • [delphi]保证程序只运行一个实例
  • [element-ui] el-dialog 中的内容没有预先加载,因此无法获得内部元素的ref 的解决方案
  • [ffmpeg] aac 音频编码
  • [go] 策略模式
  • [LeetCode] 197. 上升的温度
  • [mit6.s081] 笔记 Lab2:system calls
  • [NISACTF 2022]sign-ezc++
  • [NOIP2000] 乘积最大