数据挖掘从入门到放弃(二):决策树

实验二:Iris数据集分类——近邻分类算法 (1)简单的现状:近邻法包括最近邻法、k近邻法、剪辑近邻法和压缩近邻法。其属于分类算法,其中分类过程可看作是从数据集到一组类别的函数(映射),大致分为两个阶段:训练阶段和测试阶段。(2)最近邻法和k-近邻法的原理:k近邻法实际上就是近邻法的延伸,最近邻法的是k近邻法,k=1时的特例。其算法原理是先确定一个k值,然后计算所有样本点与已知训练样本之间的距离装入一个矩阵中,然后将这些距离再有小到大的进行排列。 阅读详情

“ 上篇内容介绍的是线性回归和逻辑回归模型,输入输出是连续值,分类模型的输出是一个有限集合,本篇介绍决策分类树算法”

决策树算法理解

决策树是直观运用概率分析的树形分类器,是很常用的分类方法,属于监管学习,决策树分类过程是从根节点开始,根据特征属性值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。

比如说买瓜的时候,根据瓜的某些特征属性直观判断瓜的好坏,下图依次根据纹理清晰度、根蒂、色泽、触感4个进行分类,生活中我们会将某个最重要或最明显的分类属性放在第一位,然后是次重要属性,这很符合我们平常的判断思维,这就是决策树!

在特征属性非常大的时候,就出现了首选哪个特征属性进行分类?如何剪枝?分类的层次是多少?....系列问题,这些就是决策树构建的核心问题,而且不可能再通过生活直觉判,这时候就要运用数学思维。根据上面问题的不同解决方案,决策树又分为了ID3(熵增益)、C4.5(熵增益率)、CART几种同类算法。

熵增益(ID3)

通信层面,信息熵衡量信息的不确定性,信息熵越大表明信息越不准确,可以用信息熵的减少值来衡量信息的价值。在决策树模型中把信息确定性叫做熵增益,有了熵增益后,我们就可以根据熵增益来判断特征值的重要程度,从而选取最重要的特征作为第一次切分,再根据相同的方法用其他特征进行切分,直到得到得到每个划分的叶子节点。信息熵的定义是:

以某个特征属性值切分后子集熵的和称为条件A下的熵,也叫做条件熵,可以如下表示:

分类前的信息熵减去条件熵,得到熵增益:


比如说有以下数据集(相亲结果表lol..)


6条数据中相中(4个)与不想中(2个),暂且不关系如何进行分类,我们首先计算这个分类结果的信息熵:


其次,我们计算“富”属性的条件信息熵,6条数据中“富”与否各半,其中3个“富”都被分类到“相中”,3个“不富”都被分到“不想中”:


两者之差就是我们想要得到的熵增益:

计算各个特征属性的熵增益后,比较哪个熵增益最大,就选择该属性做第一分类特征。

熵增益率(C4.5)
按照熵增益最大准则的ID3算法,遇到全部都是非重复值(类似ID)属性容易造成过拟合,因为如果根据ID这个属性进行划分发现此时的熵增益是最大的:


信息增益率定义为:


其中info就是该特征属性中,属性值的信息熵:


按照上面的例子计算,“富”的增益率为:


剪枝处理

当训练数据量大、特征数量较多时构建的决策树过于庞大时,可能对训练集依赖过多,也就是对训练数据过度拟合。从训练数据集上看,拟合效果很好,但对于测试数据集或者新的实例来说,并不一定能够准确预测出其结果。因此,对于决策树的构建还需要最后一步--决策树的修剪,主要分为2种:预剪枝(Pre-Pruning)和后剪枝(Post-Pruning),这里先不讲。

鸢尾花(iris)分类模型

Iris 鸢尾花数据集是一个经典数据集,在统计学习和机器学习领域都经常被用作示例。数据集内包含 3 类共 150 条记录,每类各 50 个数据,每条记录都有 4 项特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度,可以通过这4个特征预测鸢尾花卉属于(iris-setosa, iris-versicolour, iris-virginica)中的哪一品种,数据集地址:https://github.com/yezonggang/iris


import pandas as pd
from pandas import DataFrame
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
from sklearn.tree import DecisionTreeClassifier
from sklearn import metrics 
 
baseUrl="C:\\Users\\71781\\Desktop\\2020\\ML-20200422\\iris\\"
iris_df=pd.read_csv(baseUrl+"iris.csv")
iris_df.head()
iris_df.describe()

 数据分布探索:

# pandas 自带的散点图
iris_df.plot(kind="scatter", x="Sepal.Length", y="Sepal.Width")


# seaborn 的联合分布图
sns.jointplot(x="Sepal.Length", y="Sepal.Width", data=iris_df, height=5)


# 上面的两个散点图并不能显示每一个点所属的类别
# 所以,接下来用 seaborn 的 FacetGrid 函数按照Species花的种类来在散点图上标上不同的颜色,hue英文是色彩的意思。
sns.FacetGrid(iris_df, hue="Species", height=5).map(plt.scatter, "Sepal.Length", "Sepal.Width").add_legend()


# 通过箱线图来查看单个特征的分布
# 对 Numerical Variable,可以用 Box Plot 来直观地查看不同花类型的分布。
sns.boxplot(x="Species", y="Sepal.Length", data=iris_df)


# 下面的操作,将每一个Species所属的点加到对应的位置,加上散点图,
# 振动值jitter=True 使各个散点分开,要不然会是一条直线
# 注意此处要将坐标图用ax先保存起来,这样第二次才会在原来的基础上加上散点图
ax = sns.boxplot(x="Species", y="Sepal.Length", data=iris_df)
ax = sns.stripplot(x="Species", y="Sepal.Length", data=iris_df, jitter=True, edgecolor="gray")

# violinplot 小提琴图,查看密度分布,结合了前面的两个图,并且进行了简化
# 数据越稠密越宽,越稀疏越窄
sns.violinplot(x="Species", y="Sepal.Length", data=iris_df, height=6)
 # sns.kdeplot == kernel density 核密度图(单个变量)
sns.FacetGrid(iris_df, hue="Species", height=6).map(sns.kdeplot, "Sepal.Length").add_legend()
 # pairplot 任意两个变量间的关系
sns.pairplot(iris_df, hue="Species", height=3)


# 模型构建比较简单,关键是模型的调参
train_df=test_df=iris_df.sample(frac=0.8,replace=False, random_state=None)
train_X=train_df.drop(['Species'],axis=1)
train_Y=train_df['Species']
# 由于么有提供建模数据集,所以我们随机从样本集中选择40%的数据集
# replace=False 无放回的抽取
# random-state 数据不能重复
test_df=iris_df.sample(frac=0.9,replace=False, random_state=None)
test_df.head()
 
test_X=test_df.drop(['Species'],axis=1)
test_Y=test_df['Species']
 
model=DecisionTreeClassifier()
model.fit(train_X, train_Y)
prediction = model.predict(test_X)
print('The accuracy of the Decision Tree is: {0}'.format(metrics.accuracy_score(prediction,test_Y)))


分类决策树总共有12个参数可以自己调整,这么多参数一个个记起来太麻烦,我们可以把这些参数分成几个类别:
    1)分类策略:有两个参数 ‘entropy’(熵) 和 ‘gini’(基尼系数)可选,默认为gini。
    2)max_depth(树的最大深度):默认为None,此时决策树在建立子树的时候不会限制子树的深度。也可以设置具体的整数,一般来说,数据少或者特征少的时候可以不管这个值。如果模型样本量多,特征也多的情况下,推荐限制这个最大深度,具体的取值取决于数据的分布。常用的可以取值10-100之间。
    3)min_samples_split(分割内部节点所需的最小样本数):意思就是只要在某个结点里有k个以上的样本,这个节点才需要继续划分,这个参数的默认值为2,也就是说只要有2个以上的样本被划分在一个节点,如果这两个样本还可以细分,这个节点就会继续细分
    4)min_samples_leaf(叶子节点上的最小样本数):当你划分给某个叶子节点的样本少于设定的个数时,这个叶子节点会被剪枝,这样可以去除一些明显异常的噪声数据。默认为1,也就是说只有有两个样本类别不一样,就会继续划分。如果是int,那么将min_samples_leaf视为最小数量。如果为float,则min_samples_leaf为分数,ceil(min _ samples _ leaf * n _ samples)为每个节点的最小样本数。

文末福利

各位猿们,还在为记不住API发愁吗,哈哈哈,最近发现了国外大师整理了一份Python代码速查表和Pycharm快捷键sheet,火爆国外,这里分享给大家。

这个是一份Python代码速查表

下面的宝藏图片是2张(windows && Mac)高清的PyCharm快捷键一览图

怎样获取呢?可以添加我们的AI派团队的程序媛姐姐

一定要备注【高清图】哦

????????????????????

➕我们的程序媛小姐姐微信要记得备注【高清图】哦

来都来了,喜欢的话就请分享、点赞、在看三连再走吧~~~

Python学习笔记9——基于iris数据集的决策树分类算法实战 本文以iris数据集为例,利用Python的决策树分类算法对鸢尾花进行分类实战,主要环节是数据预处理、模型训练及效果评估。预处理主要是对数据集进行拆分,得到训练数据和测试数据模型训练是利用拆分得到的训练集来训练模型;效果评估主要用到了准确率、精确率、召回率、F1值、混淆矩阵的指标,还用到了学习曲线进行过拟合、欠拟合评估,以及用到ROC曲线结合AUC值分析的方法。为了便于新手入门,大部分过程都写得比较细,希望能够对读者在学习和应用机器学习算法时有所帮助,若有不对的地方也请评论指正~ 阅读详情

相关推荐

数据挖掘算法之决策树详解

本文目录: 风控决策树模型 决策树模型的种类 决策树模型的构造

未来金科学院 2867

机器学习:鸢尾花(Iris)分类

简单机器学习应用:鸢尾花(Iris)分类 衡量模型是否成功:训练数据与测试数据 我们想要利用这些数据构建一个机器学习模型,用于预测新测量的鸢尾花的品种。但在将模型应用于新的测量数据之前,我们需要知道模型是否有效,也就是说,我们是否应该相信它的预测结果。 但是,我们不能将用于构建模型的数据用于评估模型。因为这样的话模型会一直记住整个训练集,所以对于训练集中的任何数据点总会预测正确的标签。这种“记忆”无法告诉我们模型的泛化(generalize)能力如何(换句话说,在新数据上能否正确预测)。 我们要用新数据来评

hughie的博客 8456

数据挖掘--决策树

In [9]no=0 # 决策树节点的编号column=0 # 该节点的属性entropy=0 # 交叉熵samples=0 # 该节点下的数据数目value=[] # 记录由该节点划分的不同类别的数据split=0 # 分类临界值clss=-1 # 该节点的分类branch_positive=None # 左分支branch_negative=None # 右分支本项目通过自行搭建决策树和使用sklearn提供的决策树进行实验,在Adult数据集的测试集上取得了一致的结果。

2301_81887304的博客 1577

sklearn基础篇(三)-- 鸢尾花(iris)数据集分析和分类

本文是基于《Python机器学习基础教程》第一章学习的总结,主要是基于iris数据集进行探索数据分析和不同分类模型的对比,从而熟悉使用sklearn的模型进行机器学习。

CarpeDiem 12万+

sql server 建立决策树模型

sql server 建立决策树模型       在之前的系列中,介绍了如何导入数据源,不论是excel文件还是其它的数据源,都可以作为我们的数据来源来导入,那么,本文就根据之前导入的数据在sql server 建立决策树模型,并且对测试数据进行结果预测,原理部分,请参看其他博文,和前面一样,仍然采用截图的方式来描述过程。        在"BI"里面建立一个决策树项目,在”视图“选项下打开”解决...

WQ的博客 4088

机器学习之决策树模型篇 ---- 某流行手游胜负预测

决策树模型在MOBA类手游胜负预测任务中表现优异,准确率达72.57%。该模型通过计算熵或基尼系数选择最优分裂特征,模拟人类决策过程,特别适合处理游戏数据中的非线性关系和离散特征。实验表明max_depth=3时效果最佳,过深易导致过拟合。优化建议包括采用向量化计算、信息增益率和动态参数调整。决策树的高解释性和高效推理能力使其成为电竞预测的理想选择,未来可升级为随机森林或XGBoost进一步提升性能。该模型不仅能提供可靠预测,还能揭示经济差等关键制胜因素。

YBAdvanceFu的博客 1525

pycharm训练数据慢_数据挖掘从入门到放弃(二):决策树

“ 上篇内容介绍的是线性回归和逻辑回归模型,输入输出是连续值,分类模型的输出是一个有限集合,本篇介绍决策分类树算法”决策树算法理解决策树是直观运用概率分析的树形分类器,是很常用的分类方法,属于监管学习,决策树分类过程是从根节点开始,根据特征属性值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。比如说买瓜的时候,根据瓜的某些特征属性直观判断瓜的好坏,下图依次根据纹理清晰度...

weixin_35755562的博客 385

数据挖掘入门

数据挖掘,一门计算机科学课程,一种计算机科学技术,一种针对大数据的处理手段,一种通过各种算法来搜索隐藏于大数据中的巨大潜在价值的过程。通过统计、在线分析处理、情报检索、机器学习、专家系统和模式识别等方法来实现。 在如今数据爆炸的时代,大数据越来越“大”,蕴藏在大数据中的潜在价值也越来越高,相应的,获取潜在价值的难度也越来越大。所以,市场上迫切需要一个优秀的获取潜在价值的工具。需求驱动发展,数据挖掘孕育而生。将杂乱无章的数据转换成有用的信息和知识,涉及到多种...

CLubiy的博客 5800

iris数据集用各种分类方法分类_数据挖掘从入门到放弃(二):决策树

“ 上篇内容介绍的是线性回归和逻辑回归模型,输入输出是连续值,分类模型的输出是一个有限集合,本篇介绍决策分类树算法”决策树算法理解决策树是直观运用概率分析的树形分类器,是很常用的分类方法,属于监管学习,决策树分类过程是从根节点开始,根据特征属性值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。比如说买瓜的时候,根据瓜的某些特征属性直观判断瓜的好坏,下图依次根据纹理清晰度...

weixin_34565946的博客 1649

机器学习之分类模型(二)——决策树

机器学习算法(二): 决策树0. 前言0.1 决策树介绍0.2 决策树应用0.3 决策树原理1. 天池实验室算法实战——企鹅数据1.0 代码流程预览1.1 Demo实践Step1: 库函数导入Step2:模型训练Step3:数据和模型可视化(需要用到graphviz可视化库)Step4:模型预测1.2 数据分析Step1:函数库导入Step2:数据读取/载入Step3:数据信息简单查看Step4:可视化描述1.3 建模预测1.3.1 利用 决策树模型 在二分类上 进行训练和预测1.3.2 利用 决策树模型

Jelly's Blog 3700

Python数据挖掘实战:构建购买电脑预测决策树模型

数据挖掘是从大量数据中提取隐含、未知且具有价值的信息与知识的过程,广泛应用于金融、医疗、电商等领域。以“判断用户是否购买电脑”为案例背景,本项目通过构建决策树模型实现对用户行为的分类预测。整个数据挖掘流程包括数据收集、预处理、特征工程、模型构建与评估等核心环节。其中,决策树因其可解释性强、无需复杂预处理等特点,在分类任务中表现出色。后续章节将围绕该模型展开深入解析与实战操作。

weixin_29323977的博客 924

【海量数据挖掘/数据分析】之 决策树模型(决策树模型、决策树构成、决策树常用算法、决策树性能要求、信息增益、信息增益计算公式、决策树信息增益计算实例)

【海量数据挖掘/数据分析】之 决策树模型(决策树模型、决策树构成、决策树常用算法、决策树性能要求、信息增益、信息增益计算公式、决策树信息增益计算实例) 一、决策树模型 1、常用算法 2、属性划分策略 3、其他算法 三、决策树算法性能要求 四、 决策树模型创建 ( 递归创建决策树 ) 1 、 决策树模型创建 2 、 决策树创建算法 ( 递归 ) 3 、 递归操作 4 、 递归停止的条件 五、 决策树 树根属性 选择 六、信息增益 说明 1、 熵 和 信息 的数据组成 2 、 信息增

仙魁XAN 1万+

滚动轴承振动信号特征解析与故障诊断模型构建

本文深入解析了滚动轴承振动信号的三大来源与特征,并详细阐述了从时域、频域到时频域的特征提取方法。通过构建基于机器学习(如随机森林、SVM)或深度学习的故障诊断模型,结合实战代码示例,为设备维护工程师提供了一套从信号分析到智能诊断的完整解决方案,旨在实现精准的故障识别与预测性维护。

qsc901234567的博客 368

【数据挖掘】数据挖掘总结 ( 数据挖掘特点 | 数据挖掘组件化思想 | 决策树模型 ) ★

一、 数据挖掘特点、 二、 数据挖掘组件化思想、 三、 决策树模型、 1、 决策树模型创建、 2、 树根属性选择

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 2632

EB TRESOS 29.0.0安装教程用于MCAL配置开发

本文介绍的搭建基于NXP官网提供EB软件,进行基于标准AUTOSAR软件底层驱动配置的开发

qq_53260940的博客 1882

Claude Code Router 401错误修复

claude code router配置相关环境变量问题

如沐春风 6364

【数据挖掘】决策树算法简介 ( 决策树模型 | 模型示例 | 决策树算法性能要求 | 递归创建决策树 | 树根属性选择 )

I . 决策树模型 II . 决策树模型 示例 III . 决策树算法列举 IV . 决策树算法 示例 V . 决策树算法性能要求 VI . 决策树模型创建 ( 递归创建决策树 ) VII . 决策树 树根属性 选择

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 4492

竞赛无人机模块化开发实战:2023 TI电赛G题空地协同消防系统(飞控与视觉融合篇)

本文以2023年TI电赛G题为例,详细阐述了采用模块化开发思维构建空地协同智能消防系统的实战方法。文章重点拆解了无人机飞控二次开发、视觉识别与融合控制等核心模块,提供了硬件选型、代码实现与系统联调的完整指南,旨在帮助参赛者通过“搭积木”式编程高效完成复杂系统集成。

js777的博客 456

用MACD决策树模型预测股票趋势

前言上回说到,可以用LSTM时序模型来预测股票价格,在股票价格技术分析中,MACD作为一个经典的交易指标,一直指导着买卖时机,这篇我们实现一下在这个指标下的决策树模型,来预测未来的股票走势...

深度觉醒 9339

车载面试题目(ADAS)

多数功能都是依靠的前置传感器(经过Lidar、Radar、Camera融合),比如ACC、AEB、LKA、NOA、TJA、FCW等,只有少数涉及周视传感器,比如BSD、CVW、DOW。③如果前面有车切速度小于自车车速,自车减速对减速度有要求,比如3.5m/m2,④如果前车静止了,自车有个跟停距离要求,比如2-3m。试验场有不同曲率的弯道,比如125m、250m、500m的,根据需求跟车行驶,看是否会减速,能不能驶出弯道等。迭代内容:底层通讯、网络管理、诊断、刷写、信息安全、OTA。

qq_43475097的博客 2298

学Simulink——基于直流电机的建模与控制场景实例:直流电机带负载突变时的动态响应仿真

在实际应用中,直流电机经常需要应对各种工作条件的变化,例如负载突变。了解电机在这种情况下的动态响应特性对于确保系统的稳定性和可靠性至关重要。通过仿真分析,可以预测电机在不同负载条件下的表现,并优化控制系统的设计。本文将详细介绍如何使用来构建一个直流电机带负载突变时的动态响应仿真模型,并通过仿真展示其应用效果。本文介绍了如何使用构建一个直流电机带负载突变时的动态响应仿真模型,并通过仿真展示了其应用效果。

xiaoheshang_123的博客 115

机器学习算法-决策树模型及小案例

机器学习算法-决策树一、决策树算法原理1、定义2、原理二、决策树算法小案例1、数据挖掘流程2、根据流程实现决策树算法(1)读取数据(2)探索性数据分析(3)数据清洗(4)特征筛选(5)数据预处理(6)建模(7)模型评估 一、决策树算法原理 1、定义 决策树算法定义:决策树算法是一种非参数的决策算法,它根据数据的不同特征进行多层次的分类和判断,最终决策出所需要预测的结果。它既可以解决分类算法,也可以解决回归问题,具有很好的解释能力。 2、原理 (1)决策树原理图 (2)对于决策树的构建方法具有多种出发点,它具

AKlianwenlan的博客 2155

手把手教你学Simulink--基于Simulink的风力发电系统用双馈电机控制仿真建模

特点高效节能:在广泛的风速范围内保持高效的能量转换。独立控制有功和无功功率:通过控制转子电流实现对有功和无功功率的独立调节。较低的成本:相比直接驱动或全功率变流器方案,成本较低。挑战控制复杂度较高:需要复杂的控制算法来实现有功和无功功率的解耦控制。对电网波动敏感:需要良好的稳定性控制策略以应对电网电压波动。利用Simscape Electrical中的模块构建DFIG的物理模型,配置参数如电阻、电感、极对数等。matlab深色版本% 添加DFIG电机模块。

MHD0815的博客 353

机器学习_05 决策树模型

本文主要讲解了决策树模型的基本概念、模型的创建与预测以及模型评估等内容

cc是小陈的博客 1014

PyTorch深度学习实战(36)——Pix2Pix详解与实现

Pix2Pix 是基于生成对抗网络的图像转换框架,能够将输入图像转换为与之对应的输出图像,能够广泛用于图像到图像转换的任务,如风格转换、图像修复、语义标签到图像的转换等。Pix2Pix 的核心思想是通过对抗训练将输入图像和目标输出图像进行配对,使生成网络可以学习到输入图像到输出图像的映射关系。在本节中,将学习使用 Pix2Pix 根据给定轮廓生成图像。

盼小辉丶的博客 1万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

上一篇: 手绘 10 张图,把 CSRF 跨域攻击、JWT 跨域认证说得明明白白的
下一篇: 数据挖掘从入门到放弃(三):朴素贝叶斯
Wang_AI
博客等级 码龄12年 997粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值