机器学习之决策树算法

机器学习(三)决策树算法Decision Tree 上面两篇博客对机器学习有了简单的介绍,并介绍了机器学习中的一些基本的概念;下面我们来介绍机器学习中的第一个算法决策树算法DT(Decision Tree)。         介绍Decision Tree之前我先来引入一些经典的小例子来说明什么是决策树。如下面的图:                         在当今这个社会尤其是我们这群程序员对象是一个很头疼的问题 阅读详情
1. 决策树模型

决策树模型是一种树形结构,其依据一系列的if-then规则将数据集分散到各个叶子上。决策树分为两种:分类决策树和回归决策树。通常依据输出值y来判定决策树的种类,如果输出值是离散值,那么为分类决策树;如果输出值为连续值,则为回归决策树。决策树的主要优点是模型具有可读性、分类速度快。学习决策树时,利用训练数据,根据损失函数最小化的原则建立决策树模型。决策树的思想主要来源于由Quinlan在1986年提出的ID3算法和1993年提出的C4.5算法,以及由Breiman等人在1984年提出的CART算法。

2. 决策树的学习过程
  1. 特征选择:特征选择表示从众多的特征中选择一个特征作为当前节点分裂的标准,如何选择特征有不同的量化评估方法,从而衍生出不同的决策树,如ID3(信息增益)、C4.5(信息增益比)、CART(Gini指数)等。
  2. 决策树的生成:根据选择的特征评估标准,从上至下递归地生成子节点,直到数据集不可分则停止决策树停止生长。这个过程实际上就是使用满足划分准则的特征不断的将数据集划分成纯度更高,不确定度更小的子集的过程。
  3. 决策树的剪枝:决策树容易过拟合,一般来需要剪枝,缩小树结构规模、缓解过拟合。剪枝技术有预剪枝和后剪枝两种。

决策树算法最常用的算法是ID3、C4.5和CART等,本文主要对这三种决策树算法做一些详细解析。

3. ID3算法

在学习ID3算法之前,首先回归一下信息论的一些熵的基础知识,熵度量事物的不确定性,不确定性越大,熵越大。假设X是一个离散随机变量,其概率分布为:p(X=xi)=pi,i=1,2,...,np(X=x_i)=p_i,i=1,2,...,np(X=xi​)=pi​,i=1,2,...,n随机变量X的熵定义为H(X)=−∑i=1npilogpiH(X)=-\sum_{i=1}^np_ilogp_iH(X)=−i=1∑n​pi​logpi​
事件的信息量是抽象的概念,通常用不确定性来衡量。不确定性越大,事件发生所需的信息量越大。(与事件发生的概率p成反比)

信息增益计算

信息熵:设S是s个数据样本集合,假定类别标签有m个不同值,定义m个不同类Ci(i=1,2,...,m)C_i(i=1,2,...,m)Ci​(i=1,2,...,m),设SiS_iSi​是CiC_iCi​的样本数,该样本分类的信息熵由下式计算:
I(S)=−∑impilog(pi)I(S)=-\sum_i^mp_ilog(p_i)I(S)=−i∑m​pi​log(pi​)

pip_ipi​是任意样本属于CiC_iCi​的概率

  • 用信息熵来度量每种特征不同取值下的不确定性
  • 设A有v个不同值{a1,a2,...,av}\left\{a_1,a_2,...,a_v\right\}{a1​,a2​,...,av​}
  • 某一特征A将S划分为v个不同的子集{S1,S2,...,Sv}\left\{S_1,S_2,...,S_v\right\}{S1​,S2​,...,Sv​}
  • 由A划分子集的熵:E(A)=∑j=1vSjSI(Sj)E(A)=\sum_{j=1}^v\frac{S_j}{S}I(S_j) E(A)=j=1∑v​SSj​​I(Sj​)I(Sj)=−∑impijlog(pij)I(S_j)=-\sum_i^mp_{ij}log(p_{ij})I(Sj​)=−i∑m​pij​log(pij​)
    其中SjS_jSj​表示为A特征下的第j个特征值的样本,最后该特征A下的信息增益:
    Gain(A)=I(S)−E(A)Gain(A)=I(S)-E(A)Gain(A)=I(S)−E(A)

根据信息增益准则的特征选择方法是:对训练数据集D,计算每个特征的信息增益,并比较它们的大小,选择信息增益最大的特征,信息增益越大,说明这个特征有更好的分类能力。

ID3算法的核心是在决策树各个结点上应用信息增益准则选择特征,递归地构建决策树。具体方法是:从根节点开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征,由该特征的不同取值建立子结点,再对子结点递归的调用以上方法,构建决策树,直到所有特征的信息增益均很小或没有特征可以选择为止。最后得到一个决策树。

算法
  1. 创建根节点R
  2. 如果当前Dataset中数据是同一类,将R的节点类型标记为当前类型
  3. 如果当attrList为空时,将R的节点类型标记为当前Dataset中样本个数最多的类型(投票)
  4. 循环:
    1) 从attrList中选择特征A
    2)按照属性A所有的不同特征值ViV_iVi​,将Dataset分为不同的子集DiD_iDi​,对于每个DiD_iDi​
    a) 创建节点C
    b) 如果DiD_iDi​为空,节点C标记为Dataset中样本个数最多的类型
    c) DiD_iDi​不为空,节点C=ID3(Di,attrList−A)C=ID3(D_i,attrList-A)C=ID3(Di​,attrList−A)
    d) 将节点C添加为R的子节点
  5. 返回R
缺点
  • 分裂特征倾向于选择属性值较多的特征属性,可能不会提供太多有价值的信息(极限状态下比较)
    • 贪婪性
    • 奥卡姆剃刀原理:尽量用较少的东西做更多的事
  • 仅支持离散特征,不支持连续特征
4. C4.5算法

改进:用信息增益率替代信息增益,信息增益率不仅考虑了信息增益对信息熵的影响,也引入了某一特征下的数据分布对信息熵的影响。

  • 和ID3相比,克服了用信息增益选择特征时偏向选择特征值较多的特征的不足之处
  • 支持离散特征与连续特征
信息增益率

H(S)=−∑i=1mp(ui)log(p(ui))H(S)=-\sum_{i=1}^mp(u_i)log(p(u_i))H(S)=−i=1∑m​p(ui​)log(p(ui​))Gain(S,A)=Entropy(S)−∑v∈Value(A)∣Sv∣SEntropy(Sv)Gain(S,A) = Entropy(S)-\sum_{v \in Value(A)}\frac{|S_v|}{S}Entropy(S_v)Gain(S,A)=Entropy(S)−v∈Value(A)∑​S∣Sv​∣​Entropy(Sv​)GainRatio(A)=Gain(A)Entropy(A)GainRatio(A)=\frac{Gain(A)}{Entropy(A)}GainRatio(A)=Entropy(A)Gain(A)​Entropy(A)=−∑ipilog(pi)Entropy(A)=-\sum_ip_ilog(p_i)Entropy(A)=−i∑​pi​log(pi​)

pi表示为特征A下第i个特征值的样本占总样本的比例,Entropy(A)表示为A下的信息熵。属性A的分布情况,混乱度越大,ratio越小,越纯净,ratio越大。

叶子节点输出规则
  • 若叶子节点的所有样本都是同一类,则输出这一类别。
  • 若属性列表为空时,叶子节点输出大多数样本所属的类别。
算法
  1. 创建根节点R
  2. 如果当前Dataset中数据是同一类或其他终止条件,将R的节点类型标记为当前类型
  3. 如果当attrList为空时,将R的节点类型标记为当前Dataset中样本个数最多的类型(投票)
  4. 循环:
    1) 从attrList中选择Gainratio最大的属性A
    2)按照属性A所有的不同特征值ViV_iVi​,将Dataset分为不同的子集DiD_iDi​,对于每个DiD_iDi​
    a) 创建节点C
    b) 如果DiD_iDi​为空,节点C标记为Dataset中样本个数最多的类型
    c) DiD_iDi​不为空,节点C=C4.5(Di,attrList−A)C=C4.5(D_i,attrList-A)C=C4.5(Di​,attrList−A)
    d) 将节点C添加为R的子节点
  5. 返回R
5. CART(classification and regression tree)

CART决策树的生成是递归的构建二叉决策树的过程。对回归树用误差平方和最小化为准则;对分类树用基尼指数为最小化准则,进行特征选择,生成二叉树。

5.1 回归树的生成

最小二乘回归树算法

当输入空间划分确定时,用误差平方和来表示回归树对于训练数据的预测误差,用平方误差最小化的准则求解每个单元上的最优输出值,单元RmR_mRm​上的CmC_mCm​的最优值是RmR_mRm​上所有输入实例xix_ixi​对应的输出yiy_iyi​的均值

  1. 遍历变量j以及对应的所有特征值s,选择最优切分属性j和切分点s,求解min⁡j,s[min⁡ci∑xi∈R1(j,s)(yi−c1)2+min⁡c2∑xi∈R2(j,s)(yi−c2)2]\min_{j,s}[\min_{c_i}\sum_{x_i \in R_1(j,s)}(y_i-c_1)^2+\min_{c_2}\sum_{x_i \in R_2(j,s)}(y_i-c_2)^2]j,smin​[ci​min​xi​∈R1​(j,s)∑​(yi​−c1​)2+c2​min​xi​∈R2​(j,s)∑​(yi​−c2​)2]

  2. 用选定的(j,s)划分区域并决定相应的输出值R1(j,s)=x∣x(j)≤s,R1(j,s)=x∣x(j)>sR_1(j,s)={x|x^{(j)} \leq s},R_1(j,s)={x|x^{(j)} > s}R1​(j,s)=x∣x(j)≤s,R1​(j,s)=x∣x(j)>scm=1Nm∑xi∈Rm(j,s)yic_m=\frac{1}{N_m}\sum_{x_i \in R_m(j,s)}y_icm​=Nm​1​xi​∈Rm​(j,s)∑​yi​

  3. 继续对两个子区域调用步骤1.2,直至满足停止条件

  4. 将输入空间划分为M个区域,生成决策树。

5.2 分类树的生成

分类树用基尼指数选择最优特征,同时决定该特征的最优二值切分点。->原因:信息增益率计算−p(x)log(p(x))-p(x)log(p(x))−p(x)log(p(x)),logloglog计算增加了计算复杂度,giniginigini系数=1−sum(p2)=1-sum(p^2)=1−sum(p2),虽然没有信息增益比更加准确,但是也能反映出信息熵的变化,而且基尼指数计算相对简单一些。

分类树算法
  1. 设节点的训练数据集为D,在所有可能的特征A以及它们对应的所有切分点a中,根据样本点对A=a的测试为“是”或“否”将D分割为D1D_1D1​和D2D_2D2​两部分,并计算切分后的基尼指数,选择基尼指数最小的特征以及对应切分点作为最优特征与最优切分点。
  2. 依据最优特征与最优切分点,将训练数据集分割到两个子节点中。
  3. 对两个子节点递归的调用1,2,直至满足条件为止。
  4. 生成CART决策树。

算法终止条件是:节点中的样本个数小于预定阈值或样本集的基尼指数小于预定阈值。

5.3 CART剪枝

CART剪枝算法由两步组成:1.先从生成算法产生的决策树T0T_0T0​底端开始不断剪枝,直到T0T_0T0​的根节点,形成一个子树序列{T0,T1,...,Tn}\left\{T_0,T_1,...,T_n\right\}{T0​,T1​,...,Tn​}。2.通过交叉验证法在独立的验证数据集上对子树序列进行测试,从中选择最优子树

6. CART和C4.5的对比

CART算法和C4.5算法相比,采用了简化的二叉树模型,同时特征选择采用了近似的基尼系数来简化计算。而且,CART树最大的好处是支持*回归模型与分类模型,但是ID3和C4.5只支持分类模型。

防止过拟合的参数调整
  • min_samples_leaf,默认值是1,经验上必须大于100,如果一个结点没有100个样本来支持它的决策,一般认为是过拟合。
  • max_depth参数控制树的规模

Python实现ID3算法

import math

# 生成初始数据集
def gene_data():
    data_set = [[1,1,'yes'],
                [1,1,'yes'],
                [1,0,'no'],
                [0,1,'no'],
                [0,1,'no']]

    cols = ['no surfacing', 'flippers']
    return data_set,cols

# 计算熵
def cal_entropy(data_set):
    label_cnt = dict()
    for feat in data_set:
        curr_label = feat[-1]
        if label_cnt.get(curr_label,-1) == -1:
            label_cnt[curr_label] = 0
        label_cnt[curr_label] += 1

    Entropy = 0.0
    for label in label_cnt:
        prob = label_cnt[label] / float(len(data_set))
        Entropy -= prob * math.log(prob)
    return Entropy

# 将数据集按照索引为i,特征值为value进行划分
def split_data_set(data_set,i,value):
    """
    :param data_set: 数据集
    :param i: 数据集的特征索引
    :param value: 对应索引的特征值
    :return: 划分的子集
    """
    splited_data = []
    for data in data_set:
        if data[i] == value:
            proc_data = data[:i]
            proc_data.extend(data[i+1:])
            splited_data.append(proc_data)

    return splited_data

# 从整个数据集中搜索最合适的特征作为划分依据
def choose_best_feat_to_split(dataset):
    feat_cnt = len(dataset[0]) - 1
    best_info_gain = 0.0
    best_feature = -1
    base_entropy = cal_entropy(dataset)
    for i in range(feat_cnt):
        new_entropy = 0.0
        feat_list = [data[i] for data in dataset]
        unique_feat_value = set(feat_list)
        for feat_value in unique_feat_value:
            split_data = split_data_set(dataset,i,feat_value)
            prob = len(split_data) / float(len(dataset))
            splited_entropy = cal_entropy(split_data)
            new_entropy += prob * splited_entropy
        info_gain = base_entropy - new_entropy
        if info_gain > best_info_gain:
            best_info_gain = info_gain
            best_feature = i
    return best_feature

# 叶子结点返回的规则:样本中类别数量最多的一个类别
def majority_class(class_list):
    class_cnt = dict()
    for label in class_list:
        if class_cnt.get(label,-1) == -1:
            class_cnt[label] = 0
        class_cnt[label] += 1
    return max(class_cnt.items(),key=lambda x:x[1])[0]

# 递归生成决策树
def gen_tree(dataset,cols):
    label_list = [data[-1] for data in dataset]
    if label_list.count(label_list[0]) == len(label_list):
        return label_list[0]
    if len(dataset[0]) == 1:
        return majority_class(label_list)

    i = choose_best_feat_to_split(dataset)
    feat = cols[i]
    del(cols[i])
    my_tree = {feat:{}}
    feat_value = [data[i] for data in dataset]
    unique_value = set(feat_value)
    for value in unique_value:
        subcols = cols
        my_tree[feat][value] = gen_tree(split_data_set(dataset,i,value),subcols)

    return my_tree

if __name__ == '__main__':
    dataset,cols = gene_data()
    tree = gen_tree(dataset,cols)
    print(tree)

调用sklearn实现DecisionTree分类

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split,cross_val_score
from sklearn.tree import DecisionTreeClassifier
from sklearn import tree

# 加载sklearn库中的iris数据
iris = load_iris()

# 训练集/测试集的划分
X_train,X_test,y_train,y_test = train_test_split(iris.data,iris.target,train_size=0.8,random_state=2019)

# 分类决策树的初始化
clf = DecisionTreeClassifier(criterion='gini',
                             splitter='best',
                             max_depth=None,
                             min_samples_split=2,
                             min_samples_leaf=1,
                             min_weight_fraction_leaf=0,
                             max_features=None,
                             random_state=None,
                             max_leaf_nodes=None,
                             class_weight=None,
                             presort=False)

# 训练模型
df_model = clf.fit(X_train,y_train)

# 性能评估
print(cross_val_score(clf,iris.data,iris.target,cv=10))

# 用Graphviz将模型存储为dot文件
tree.export_graphviz(df_model,
                     out_file='tree.dot',
                     max_depth=None,
                     feature_names=iris.feature_names,
                     class_names=iris.target_names,
                     filled=True,
                     rounded=True,
                     special_characters=True)

在终端输入脚本将dot文件转化为png图

dot -Tpng tree.dot -o tree.png
机器学习笔记之信息熵、信息增益和决策树(ID3算法) 阅读详情

相关推荐

机器学习经典算法:决策树模型(Decision Tress)

决策树模型(Decision Tree)是一种常用于分类和回归任务的监督学习模型,它通过一系列的决策规则将数据逐步划分,最终形成一个树状结构。每个内部节点代表对特征的判断或测试,每个叶子节点代表分类结果或预测值。决策树模型的核心思想是通过选择最佳特征进行划分,以最大化信息增益或最小化某种损失函数,逐层将数据分割成更加纯净的子集。

Norah 的技术博客 1690

决策树(Decision Tree)

决策树,顾名思义,就是帮我们做出决策的树。现实生活中我们往往会遇到各种各样的抉择,把我们的决策过程整理一下,就可以发现,该过程实际上就是一个树的模型。more决策树分为分类树和回归树两种,分类树对离散变量做决策树,回归树对连续变量做决策树,这里我们只讨论分类树。比如选择好瓜的时候:我们可以认为色泽、根蒂、敲声是一个西瓜的三个特征,每次我们做出抉择都是基于这三个特征来把一个节点分成好几个新的节点。

crossoverpptx的博客 1万+

机器学习分类模型:决策树模型( C4.5算法、CART算法 )

机器学习分类模型:决策树模型( C4.5算法 );CART算法;基尼指数Gini;基尼指数的计算

天涯雨的博客 997

机器学习—决策树

决策树是一种基于树形结构的监督学习算法,通过一系列规则(if-then条件)对数据进行分类或回归。:包含完整数据集的最顶层节点:表示特征测试的分支决策点:最终的分类/回归结果(分类树):使用(Information Gain)选择特征信息增益=H(D)−H(D∣A)信息增益=H(D)−H(D∣A)其中 H(D)H(D) 是数据集的经验熵改进ID3,采用(Gain Ratio)避免偏向多值特征增益率=信息增益特征固有值增益率=特征固有值信息增益​(分类与回归):分类:使用回归:最小化。

2401_82590360的博客 1096

VASPKIT绘制平面平均电荷差分密度

平面平均密度差(planar-averaged electron density difference)是密度差的衍生。密度差是个三维空间函数,经常通过绘制平面图、等值面图方式图形化考察。虽然这两种图很直观,但平面图会受到截面选取的影响,而等值面图会受到等值面数值(isovalue)选取的影响,因此都有一定任意性,也不容易定量讨论。对于电子转移有比较明确方向的情况,可以绘制平面平均密度差曲线,由此可以清楚地考察垂直于选取的方向上每个截面上的密度差积分值,在定量讨论、对比上比较便利。

weixin_43948934的博客 1万+

单像素成像技术原理与Matlab仿真实现

傅里叶变换是数字图像处理的核心数学工具,它将图像从空间域转换到频率域表示。基于傅里叶频谱分析的成像技术通过采集关键频率分量实现图像重建,这种原理催生了单像素成像这一创新技术。单像素成像利用空间光调制器和单个探测器直接测量傅里叶系数,结合压缩感知算法实现高效成像,在红外、太赫兹等特殊波段展现出独特优势。通过Matlab仿真可以验证傅里叶基测量矩阵的构建、压缩感知重建等关键技术环节,为实际系统开发提供理论基础。该技术在弱光环境成像、显微观测等领域具有重要应用价值,其低成本特性也大大降低了特殊波段成像的门槛。

weixin_29061425的博客 344

机器学习之决策树的算法

在这个案例中,两种算法可能会选择相同的分裂特征,即节点的游戏时间是否长。CART算法生成的树是二叉树,而ID3算法生成的树可能是多叉树。在决策树中,每个内部节点表示一个属性上的测试,每个分支代表测试的结果,每个叶子节点代表一种类别或者一个数值。决策树的生成过程是一个自顶向下的递归划分数据的过程,直到达到某个停止条件为止。因此,在实际应用中,通常会使用ID3的改进版本,如C4.5算法。总的来说CRAT算法的优势在于它能够处理复杂的约束条件,并且能够灵活地调整资源分配,以满足多样化的需求。

weixin_73740792的博客 1887

EMC辐射发射测试:垂直与水平极化测试原理与实战指南

电磁兼容(EMC)测试是确保电子设备在复杂电磁环境中稳定运行的关键环节,其核心在于评估设备产生的电磁干扰(EMI)强度。辐射发射测试作为EMC测试的重要组成部分,通过测量设备向空间辐射的电磁噪声,判断其是否符合国际标准限值。测试原理基于电磁波的极化特性,即电场矢量的振动方向,主要分为垂直极化和水平极化。理解极化特性对于精准定位辐射源、高效进行EMC整改具有重要技术价值。在工程实践中,垂直极化噪声通常源于线缆辐射等垂直结构,而水平极化噪声多来自PCB走线等水平结构。通过分别测量两种极化方向的辐射最大值,可以全

weixin_32770423的博客 351

【机器学习】决策树(上)——从原理到算法实现

决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。它可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。

HerosOfEarth的博客 7万+

深入解析璞致PZ-ZU47DR RFSoC核心板:硬件架构与多通道ADC/DAC设计实战

本文深入解析璞致PZ-ZU47DR RFSoC核心板的硬件架构与多通道ADC/DAC设计实战。作为Xilinx Zynq UltraScale+ RFSoC系列的代表产品,PZ-ZU47DR集成了8通道5GSPS ADC和8通道9.85GSPS DAC,支持直接射频采样,大幅简化射频链路设计。文章详细介绍了其技术优势、设计挑战及实战技巧,为5G小基站、毫米波等应用场景提供高效解决方案。

meat5的博客 832

开题报告该怎么写

考研即将来临,而一般很多大学都会选择在考研结束之后开始安排选题和开题报考(考研之前一般都不谈,老师也很人性化的,不愿意耽误你的复习) 但无论怎么推迟,我们最终都需要去面对并完成这些任务。 现在我就要教大家该如何写一个完整的开题报告! 准备模板。不同的学校有不同的格式,一般情况你的导师会给你们一个学校的标准格式,这个不用太费心。有了模板我们就可以按照模板的“线索”一步一步填充完成即可! 一般大致格式可谓: 研究背景/论文的目的、背景和意义 我们需要写明选择该题目的...

wuyueweifeng的博客 1095

决策树(decision tree)(一)——构造决策树方法

决策树(decision tree) 说明:这篇博客是看周志华老师的《机器学习》(西瓜书)的笔记总结,博客中有大段文字摘自周老师的《机器学习》书,仅供学习交流使用。转载博客务必注明出处和作者,谢谢。 决策树算法起源于E.B.Hunt等人于1966年发表的论文“experiments in Induction”,但真正让决策树成为机器学习主流算法的还是Quinlan(罗斯.昆兰)大神(2011年

天泽28的专栏 10万+

YOLO 线性小目标涨点|3890 张输电导线散股 VOC+YOLO 单类别数据集实战,无人机电力缺陷巡检全流程落地

架空输电导线是电网能量传输核心载体,长期受风力摆动、雷击、腐蚀、外力撞击作用,外层铝股极易出现断裂散股故障。导线散股初期仅少量铝丝开裂,肉眼与无人机远距离航拍下属于细长微弱线性小目标;若未及时发现,散股会持续扩张,引发导线过热、断线、大面积停电重大电力安全事故。传统人工巡检存在多重行业痛点:山区、跨江河线路人员无法攀爬登杆,高空作业人身坠落风险极高;无人机单次航拍产出数千张高清图片,人工逐帧筛查微小散股耗时 3-5 天,阴天、逆光、植被遮挡场景漏检率超 45;

lin_xiu的博客 52

《machine learning in action》机器学习 算法学习笔记 决策树模型

决策树模型 重要任务:是为了理解数据中所蕴含的知识信息,因此决策树可以使用不熟悉的数据集合,并从中提取出一系列规则,这些机器根据数据集创建规则的过程就是机器学习的过程。 优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据。 缺点:可能会产生过度匹配问题。 范例:专家系统。 如何构造决策树: 编写构造树的python代码 度量算法成功率 递归建立分类器 Matplotlib绘制决策树图 利用信息论划分数据集,伪代码: IF (整个数据集属于同一个类型) return 类

m0_52186223的博客 1040

YOLOv11涨点改进 | 全网独家创新,注意力改进篇 | TGRS 2025 | 引入APCM自适应像素级协同机制,动态增强目标区域、抑制背景噪声,助力YOLOv11做红外小目标检测有效涨点

本文提出了一种基于APCM模块改进的YOLOv11网络模型,通过像素级局部-全局协同建模增强目标特征并抑制背景噪声。APCM模块采用轻量化设计,无需复杂参数,能有效提升小目标检测性能。文章详细介绍了APCM的原理、优势及其在红外小目标检测中的应用,包括模块结构、核心代码实现和YAML配置文件修改方法。实验结果表明,该方法在NUAA-SIRST和IRSTD-1K数据集上优于现有技术,显著提高了复杂场景下的检测精度与鲁棒性。

Ai缝合怪、助力小伙伴高效发论文 116

安装openclaw时出现node.exe : npm error code EIDLETIMEOUT的解决方案

本文主要介绍了安装openclaw时出现node.exe : npm error code EIDLETIMEOUT的解决方案,希望能对学习使用openclaw的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 11万+

决策树(decision tree):机器学习中的经典算法

决策树具有由根节点、分支节点、内部节点和叶节点组成的层次结构,是一种用于分类和回归应用的非参数监督学习方法。它是一种应用于多个不同领域的工具。这些树既可用于分类,也可用于回归问题。从名称本身就可以看出,它使用类似树形结构的流程图来显示一系列基于特征的拆分所产生的预测结果。它以根节点开始,以叶节点做出的决定结束。

m0_61404163的博客 1222

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

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

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

AKlianwenlan的博客 2154

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

机器学习基础之决策树算法

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

weixin_48064384的博客 627

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Spark2.X ML中Pipeline详解、特征转换和决策树分类算法的使用

Spark中有关机器学习的库已经在从MLlib往ML逐步迁移了,MLlib库也将在Spark 3.0后停止维护,所以我们需要尽快熟悉ML库。 在Spark ML库中,核心数据对象由RDD变为了DataFrame,同时,ML库中有一些特征转换的方法,并提供了Pipeline这一工具,可以使用户很方便的将对数据的不同处理组合起来,一次运行,从而使整个机器学习过程变得更加易用、简洁、规范和高效。 本文将...

BigData_Mining的博客 1263

【机器学习】探索机器学习决策树算法的奥秘

在当今这个数据驱动的时代,机器学习作为数据分析与预测的利器,正以前所未有的速度改变着我们的生活和工作方式。在众多机器学习算法中,决策树算法以其直观易懂、高效实用的特点,成为了众多领域不可或缺的工具。本文旨在带领读者深入探索机器学习决策树算法的奥秘,从基本原理到实践应用,全面剖析这一经典算法的魅力所在。

Rongxi._的计算机世界 3040

机器学习(Machine Learning)算法总结-决策树

一、机器学习基本概念总结 分类(classification):目标标记为类别型的数据(离散型数据)回归(regression):目标标记为连续型数据 有监督学习(supervised learning):训练集有类别标记无监督学习(unsupervised learning):训练集无类别标记半监督学习(semi-supervised learning):有类别标记的训练集+无类别...

WUWEILINCX123890的博客 397

python 决策树_机器学习算法之——决策树模型(Decision Tree Model)原理讲解及Python实现...

所属分类:机器学习摘要这一篇简单介绍一下使用决策树来进行分类任务, 同时我们会对决策树的结果进行可视化的显示. 这里会使用iris的例子进行分析.文章目录(Table of Contents)简介参考资料模型的训练与可视化导入数据集训练决策树模型模型的评价结果的可视化一些问题Make sure the Graphviz executables are on your systems' PATH简介...

weixin_39600837的博客 918

机器学习算法——决策树(Decision Tree)

决策树在分类、预测、规则提取等方面有着广泛应用,是一种基本的分类与回归方法。包括ID3 、c4.5、CART算法。决策树的生成是一个递归的过程。在分类问题中,表示基于特征对实例进行分类的过程。它可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。与其他算法相比,决策树的原理浅显易懂,计算复杂度较小,而且输出结果易于理解。 分类决策树模型是一种描述对实例进行分类...

zhaoqqa的博客 1434

机器学习——决策树算法原理及案例

机器学习在各个领域都有广泛的应用,特别在数据分析领域有着深远的影响。决策树是机器学习中最基础且应用最广泛的算法模型。本文介绍了机器学习的相关概念、常见的算法分类和决策树模型及应用。通过一个决策树案例,着重从特征选择、剪枝等方面描述决策树的构建,讨论并研究决策树模型评估准则。最后基于 R 语言和 SPSS Modeler这两个工具,分别设计与实现了...

weixin_34060741的博客 1万+

机器学习 决策树算法_机器学习中的决策树算法

机器学习 决策树算法A decision tree is a non-parametric supervised machine learning algorithm. It is extremely useful in classifying or labels the object. It works for both categorical and continuous datasets. ...

weixin_26640581的博客 1269
上一篇: 集成学习之GBDT算法
下一篇: bagging和boosting的区别
code__online
博客等级 码龄9年 142粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值