前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Machine Learning in Action:Decision Tree

Machine Learning in Action:Decision Tree

作者头像
西红柿炒鸡蛋
发布于 2019-03-19 09:38:13
发布于 2019-03-19 09:38:13
40000
代码可运行
举报
文章被收录于专栏:自学笔记自学笔记
运行总次数:0
代码可运行

概述

决策树这个算法比较接地气,就算你根本不懂机器学习算法也可以很好的理解决策树,决策树之前的算法就已经解释过了。主要思想就算通过条件进行分类即可。决策树主要的优点就在于数据形式非常好理解。decision tree的算法可以读取数据集合,可以得到数据中所隐含的知识信息,因此决策树可以使用不熟悉的数据集合,并从中提取一系列规则。优点很明显,计算复杂度不高,输出结果也很容易理解,就算是中间有缺失值也影响不大,特征不相关也可以处理。由于决策树是按照条件划分,如果划分的条件过多了,可能导致overfitting。 首先要做的就是要找到数据的决定性特征是什么,把它作为划分的依据。当划分完成,如果当前的叶子都是同一个类别,那么当前叶子的划分就完成了。

决策树一般的划分流程 收集数据 准备数据,不同的判别条件方法可能会导致有不同的结果 分析数据,归一化预处理等等 训练数据,最后树的结构 测试数据,做validation 使用算法解决问题,基本步骤和KNN的差不多一样。

信息增益

划分数据的原则的,划分完了,数据一定要更加有序。组织杂乱无章数据的一种方法就是使用信息熵,也就是信息论的度量方法,在划分了数据时候信息发生的变化称为信息增益,信息增益最高的特征就是最好的选择。

其中

为是该分类的概率,为了计算熵,我们需要计算所有类别所有可能包含是信息期望值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    def calculateShan(self, dataSet):
        labelFraction = {}
        if len(dataSet) == 0:
            return 0
        for data in dataSet:
            label = data[-1]
            if label not in labelFraction.keys():
                labelFraction[label] = 1
            else:
                labelFraction[label] += 1
        Ent = 0.0
        alldata = len(dataSet)
        for key in labelFraction:
            prob = float(labelFraction[key]) / alldata
            Ent -= prob * math.log(prob, 2)
        return Ent

找到最好的区分特征:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    def choosetheBestFeature(self, dataset):
        feature_num = dataset.shape[1] - 1
        bestEntDiff = 0.0
        BestFeature = -1
        Bestvalue = -1
        baseEnt = self.calculateShan(dataset)
        aSet = None
        bSet = None
        for i in range(feature_num):
            for value in dataset[:, i]:
                A, B = self.split_data(dataset, i, value)
                proA = len(A) / len(dataset)
                proB = 1 - proA
                infoEnt = proA * self.calculateShan(A) + proB * self.calculateShan(B)
                if baseEnt - infoEnt > bestEntDiff:
                    bestEntDiff = baseEnt - infoEnt
                    BestFeature = i
                    Bestvalue = value
                    aSet = A
                    bSet = B
        return BestFeature, Bestvalue, np.array(aSet), np.array(bSet)

递归构建一颗树

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    def __build_tree(self, dataSet):
        if dataSet is None:
            return None
        elif len(dataSet) < 3:
            label_class = {}
            for data in dataSet:
                label = data[-1]
                if label not in label_class:
                    label_class[label] = 1
                else:
                    label_class[label] += 1
            sorted(label_class.items(), key=lambda label_class: label_class[1], reverse=True)
            key = list(label_class)[0]
            return nodes(result=key)
        node = nodes()
        nodes.result = None
        feature, value, A, B = self.choosetheBestFeature(dataSet)
        if value != -1 and feature != -1:
            node.value = value
            node.fea = feature
            node.left = self.__build_tree(A)
            node.right = self.__build_tree(B)
        else:
            label_class = {}
            for data in dataSet:
                label = data[-1]
                if label not in label_class:
                    label_class[label] = 1
                else:
                    label_class[label] += 1
            sorted(label_class.items(), key=lambda label_class: label_class[1], reverse=True)
            key = list(label_class)[0]
            node.result = key
        return node

在构建算法中也发现了,构建一棵树是需要很长时间的,这里还好,是寻找存在的特征,如果是寻找一些连续型的特征,比如用gini系数,那么是要找到当前特征的最大最小值,然后按照步长加上去一个一个找,类似addboost一样,所以时间复杂度不低的。即使是处理很小的数据集,也是很耗时的任务。为了节省时间,可以用Python模块pickle序列化对象,序列化可以在磁盘上保存,需要就读出来,任何对象都可以序列化,字典也不例外。 开始处理数据的时候,先要测量数据的不一致性,然后用最优的方案划分数据集,直到数据集里面所有的数据都属于同一类。 这只是其中一种决策树,比较流行的还有C4.5和CART。

所有代码https://github.com/GreenArrow2017/MachineLeariningnAction/tree/master/DecisionTree

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.03.02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ICCV 2023 | 单阶段扩散神经辐射场:3D生成与重建的统一方法
在计算机视觉和图形领域,由于神经渲染和生成模型的进步,三维视觉内容的合成引起了显著关注。尽管出现了许多处理单个任务的方法,例如单视图/多视图三维重建和三维内容生成,但开发一个综合框架来整合多个任务的最新技术仍然是一个主要挑战。例如,神经辐射场(NeRF)在通过每个场景的拟合解决逆向渲染问题方面展示了令人印象深刻的新视图合成结果,这适用于密集视图输入,但难以泛化到稀疏观察。相比之下,许多稀疏视图三维重建方法依赖于前馈图像到三维编码器,但它们无法处理遮挡区域的不确定性并生成清晰的图像。在无条件生成方面,三维感知的生成对抗网络(GAN)在使用单图像鉴别器方面部分受限,这些鉴别器无法推理跨视图关系以有效地从多视图数据中学习。 在这篇论文中,作者通过开发一个全面模型来从多视图图像中学习可泛化的三维先验,提出了一种统一的方法来处理各种三维任务。受到二维扩散模型成功的启发,论文提出了单阶段扩散NeRF(SSDNeRF),它使用三维潜在扩散模型(LDM)来模拟场景潜在代码的生成先验。 虽然类似的LDM已经应用于之前工作中的二维和三维生成,但它们通常需要两阶段训练,其中第一阶段在没有扩散模型的情况下预训练变分自编码器(VAE)或自解码器。然而,在扩散NeRF的情况下,作者认为两阶段训练由于逆向渲染的不确定性特性,特别是在从稀疏视图数据训练时,会在潜在代码中引入噪声模式和伪影,这阻碍了扩散模型有效地学习清晰的潜在流形。为了解决这个问题,论文引入了一种新的单阶段训练范式,使扩散和NeRF权重的端到端学习成为可能。这种方法将生成和渲染偏差协调地融合在一起,整体上提高了性能,并允许在稀疏视图数据上进行训练。此外,论文展示了无条件扩散模型学习到的三维先验可以在测试时从任意观察中灵活地采样用于三维重建。 论文在多个类别单一对象场景的数据集上评估了SSDNeRF,整体展示了强大的性能。论文的方法代表了朝着各种三维任务统一框架的重要一步。总结来说,论文的主要贡献如下:
用户1324186
2024/03/20
4880
ICCV 2023 | 单阶段扩散神经辐射场:3D生成与重建的统一方法
VoxGRAF:基于稀疏体素的快速三维感知图像合成
对场景进行高分辨率的高保真渲染是计算机视觉和图形学领域的一个长期目标。实现这一目标的主要范式是精心设计一个场景的三维模型,再加上相应的光照模型,使用逼真的相机模型渲染输出高保真图像。生成对抗网络(GAN)已经成为一类强大的可以实现高保真高分辨率图像合成的生成模型。这种二维模型的好处之一是他们可以使用便于获得的大量图像进行训练。然而,将 GAN 扩展到三维则相对困难,因为用于监督的三维真实模型难以获得。近期,3D-aware GAN 解决了人工制作的三维模型以及缺乏三维约束的用于图像合成的 2D GAN 之间的不匹配问题。3D-aware GAN 由三维生成器、可微分渲染以及对抗训练组成,从而对新视角图像合成过程中的相机位姿以及潜在的场景的对象形状、外观等其他场景性质进行显式控制。GRAF 采用了 NeRF 中基于坐标的场景表示方法,提出了一种使用基于坐标的 MLP 和体渲染的 3D-aware GAN,将基于 3D 感知的图像合成推进到更高的图像分辨率,同时基于物理真实且无参数的渲染,保持了场景的三维一致性。然而在三维场景进行密集采样会产生巨大的消耗,同时三维的内容经常与观察视角纠缠在一起,而进行下游应用时,场景的三维表征往往需要集成到物理引擎中,因此难以直接获得场景三维内容的高分辨率表征。许多近期的方法通过将 MLP 移出场景表征从而加速了新视角合成的训练速度,通过优化稀疏体素证明了 NeRF能够获得高保真图像的原因不是由于其使用了 MLP ,而是由于体渲染和基于梯度的优化模式。
用户1324186
2022/11/07
1.3K0
VoxGRAF:基于稀疏体素的快速三维感知图像合成
CVPR 2023 | Next3D: 用于 3D 感知头部头像的生成神经纹理栅格化
动画肖像合成对于电影后期制作、视觉效果、增强现实 (AR) 和虚拟现实 (VR) 远程呈现应用程序至关重要。高效的可动画肖像生成器需要能在细粒度级别上全面控制刚性头部姿势、面部表情和凝视方向来合成不同的高保真肖像。该任务的主要挑战在于如何在生成设置中通过动画建模准确的变形并保留身份,即仅使用 2D 图像的非结构化语料库进行训练。
用户1324186
2023/09/09
9950
CVPR 2023 | Next3D: 用于 3D 感知头部头像的生成神经纹理栅格化
4K4D:对4K分辨率实现实时4D视角合成
动态视图合成旨在从捕捉到的视频中重建动态3D场景,并创建沉浸式虚拟回放,这是计算机视觉和计算机图形学领域长期存在的研究问题。对这项技术的实用性至关重要的是它能够以高保真度实时渲染,使其能够应用于VR/AR、体育广播和艺术表演。最近,隐式神经表示在通过可微分渲染从 RGB 视频重建动态 3D 场景方面取得了巨大成功。尽管动态视图的合成结果令人印象深刻,但现有的方法通常由于昂贵的网络评估过程需要几秒钟甚至几分钟才能以 1080p 的分辨率渲染图像。
用户1324186
2023/11/02
8590
4K4D:对4K分辨率实现实时4D视角合成
CVPR 2024 | ConTex-Human:纹理一致的单视图人体自由视图渲染
自由视角人体合成或渲染对于虚拟现实、电子游戏和电影制作等各种应用都是必不可少的。传统方法通常需要密集的相机或深度传感器来重建几何形状并细化渲染对象的纹理,从而产生繁琐和耗时的过程。
用户1324186
2024/04/26
6000
CVPR 2024 | ConTex-Human:纹理一致的单视图人体自由视图渲染
NeurIPS 2022 | GeoD:用几何感知鉴别器改进三维感知图像合成
‍‍原文:Improving 3D-aware Image Synthesis with A Geometry-aware Discriminator
一点人工一点智能
2022/12/27
6680
NeurIPS 2022 | GeoD:用几何感知鉴别器改进三维感知图像合成
InstantMesh:利用稀疏视图大规模重建模型从单张图像高效生成3D网格
摘要:本文提出了InstantMesh,这是一个用于从单视角图像生成即时3D网格的前馈框架,具有当前非常优秀的生成质量和显著的训练可扩展性。
一点人工一点智能
2024/04/18
3K0
InstantMesh:利用稀疏视图大规模重建模型从单张图像高效生成3D网格
3D视频人物肖像生成新突破!港科大、清华等发布AniPortraitGAN,面部表情、肩部运动全可控
目前用于人类生成相关的「可动画3D感知GAN」方法主要集中在头部或全身的生成,不过仅有头部的视频在真实生活中并不常见,全身生成任务通常不会控制人物的面部表情,并且很难提高生成质量。
新智元
2023/09/22
7000
3D视频人物肖像生成新突破!港科大、清华等发布AniPortraitGAN,面部表情、肩部运动全可控
CLIFF : 结合整帧位置信息的人体姿态和形状估计
基于参数化人体从单张RGB图像重建三维人体姿态与形状,由于图片的深度模糊性,是一个欠约束问题。由于这个问题在 AR/VR 、动作分析等领域的重要性,它引起了很多关注。
用户1324186
2022/11/07
1.7K0
CLIFF : 结合整帧位置信息的人体姿态和形状估计
撸猫何必要真猫,一张靓照也可以!斯坦福英伟达3D版神笔马良连屠两榜,3D合成7倍速
然而,让AI仅用单一视角的2D照片集合,无监督地生成高质量的多视角图像和3D形状,可真是要把它难倒了。
新智元
2021/12/27
4490
撸猫何必要真猫,一张靓照也可以!斯坦福英伟达3D版神笔马良连屠两榜,3D合成7倍速
纯卷积BEV模型的巅峰战力 | BEVENet不用Transformer一样成就ADAS的量产未来
近年来,在自动驾驶领域,鸟瞰视角(BEV)空间中的3D目标检测取得了很大的进展。作为激光雷达(LiDAR)方法的替代方案,使用周围摄像头生成伪激光雷达点在自动驾驶领域被视为一种既经济又具有前景的解决方案。因此,为了将感知任务集成到BEV空间中,提出了许多方法。
集智书童公众号
2023/12/19
1.4K0
纯卷积BEV模型的巅峰战力 | BEVENet不用Transformer一样成就ADAS的量产未来
SIGGRAPH 2023 | 用于实时辐射场渲染的 3D Gaussian Splatting
网格和点是最常见的可以用于基于 GPU/CUDA 快速光栅化的显式三维场景表征方式。而神经辐射场基于 MLP 使用体渲染对捕捉的场景化进行自由视角合成。而提升辐射场效率的方案目前多基于体素、哈希网格或是点。辐射场方法的连续性有助于场景的优化,但是渲染过程中所需的随机采样需要的花销较大同时会带来噪声。因此,在本文中,作者提出了一种新的方法:本文所提出的 3D 高斯表达在能达到 sota 视觉质量和可比的渲染时间的同时,本文所提出的基于 tile 的 Splatting 方法可以实时渲染 1080p 的结果。
用户1324186
2023/10/10
1.8K0
SIGGRAPH 2023 | 用于实时辐射场渲染的 3D Gaussian Splatting
CVPR 2023 | OTAvartar:具有可控三平面渲染交互的单样本说话脸化身
图 1:OTAvatar 动画结果。OTAvatar 以单张肖像为参考对 HDTF 数据集中的源主体进行动画化。我们使用 3DMM 姿态和表情系数来表示运动并驱动化身。此处的主体均不包括于 OTAvatar 的训练数据中。
用户1324186
2023/09/19
6990
CVPR 2023 | OTAvartar:具有可控三平面渲染交互的单样本说话脸化身
单图秒变3D对象,还可交互实时编辑!Stability AI中科大校友新作
近日,Stability AI发布消息,公开3D重建新方法SPAR3D的设计原理、代码、模型权重等。
新智元
2025/02/15
1300
单图秒变3D对象,还可交互实时编辑!Stability AI中科大校友新作
一张照片生成3D头像!苹果新模型击败StyleGAN2,表情光线都能调,网友:要用于MR?
克雷西 发自 凹非寺 量子位 | 公众号 QbitAI 随便一张照片,就可生成3D头像。而且光线真实,任意角度可调。 这是苹果的最新黑科技生成框架FaceLit。 正如其名,FaceLit的特色就是可以将人脸“点亮”。 “自带光环”的FaceLit在易用性上也不输同类,甚至更胜一筹—— 进行3D建模时,需要的照片素材无需专门选择角度,数量上也只需一张。 甚至对表情、发型、眼镜等元素进行调节时,也不需要额外素材。 而传统的头像合成工具或者需要多张图片才能工作,或者对照片角度有刁钻的要求。 正是凭借这一创新,
量子位
2023/05/06
4440
一张照片生成3D头像!苹果新模型击败StyleGAN2,表情光线都能调,网友:要用于MR?
证件照转数字人只需几秒钟,微软实现首个3D扩散模型高质量生成效果,换装改形象一句话搞定 | CVPR 2023
转载自 微软亚洲研究院 量子位 | 公众号 QbitAI 一张2D证件照,几秒钟就能设计出3D游戏化身! 这是扩散模型在3D领域的最新成果。例如,只需一张法国雕塑家罗丹的旧照,就能分分钟把他“变”进游戏中: △RODIN模型基于罗丹旧照生成的3D形象 甚至只需要一句话就能修改装扮和形象。告诉AI生成罗丹“穿着红色毛衣戴着眼镜的造型”: 不喜欢大背头?那就换成“扎着辫子的造型”: 再试试换个发色?这是“棕色头发的时尚潮人造型”,连胡子颜色都搞定了: (AI眼中的“时尚潮人”,确实有点潮过头了 )
量子位
2023/03/21
8450
证件照转数字人只需几秒钟,微软实现首个3D扩散模型高质量生成效果,换装改形象一句话搞定 | CVPR 2023
基于 Transformer 的多模态融合方法用于语义分割 !
环境语义分割是自动驾驶中的一个挑战性课题,并在诸如操纵、路径规划和场景理解等智能车辆相关研究中发挥着关键作用。由于深度神经网络的进步,特别是卷积神经网络(CNN),以及开放数据集的可用性,语义分割领域已取得了巨大进展。早期研究采用相机的RGB图像作为输入,并用具有相对单调场景的数据集进行测试。近年来,感知传感器行业的蓬勃发展以及严格的安全要求推动了涉及不同传感器和综合场景的语义分割研究。在各种研究中,激光雷达传感器(LiDAR)参与最多。流行的仅激光雷达方法包括VoxNet[6]、PointNet[7]和RotationNet[8]。然而,多模态传感器融合被视为解决自动驾驶问题的有前途的技术,并已成为语义分割的主流选择。
未来先知
2024/08/20
1.1K0
基于 Transformer 的多模态融合方法用于语义分割 !
清华大学&英伟达最新|Occ3D:通用全面的大规模3D Occupancy预测基准
自动驾驶感知需要对3D几何和语义进行建模。现有的方法通常侧重于估计3D边界框,忽略了更精细的几何细节,难以处理一般的、词汇表外的目标。为了克服这些限制,本文引入了一种新的3D占用预测任务,旨在从多视图图像中估计目标的详细占用和语义。为了促进这项任务,作者开发了一个标签生成pipeline,为给定场景生成密集的、可感知的标签。该pipeline包括点云聚合、点标签和遮挡处理。作者基于Waymo开放数据集和nuScenes数据集构造了两个基准,从而产生了Occ3D Waymo和Occ3D nuScene基准。最后,作者提出了一个模型,称为“粗略到精细占用”(CTF-Occ)网络。这证明了在3D占用预测任务中的优越性能。这种方法以粗略到精细的方式解决了对更精细的几何理解的需求。
公众号-arXiv每日学术速递
2023/08/26
1.3K0
清华大学&英伟达最新|Occ3D:通用全面的大规模3D Occupancy预测基准
SIGGRAPH Asia 2023 | 利用形状引导扩散进行单张图像的3D人体数字化
现有方法的生成外观,特别是在遮挡区域,逼真性很差。我们认为现有方法的性能不佳是由于训练数据的有限多样性导致的。然而,扩展现有的2D服装人类数据集还需要大量的人工注释。为了解决这个限制,我们提出了一种简单而有效的算法,可以从单一图像中创建一个3D一致纹理的人类,而无需依赖经过策划的2D服装人类数据集进行外观合成。
用户1324186
2023/11/29
5420
SIGGRAPH Asia 2023 | 利用形状引导扩散进行单张图像的3D人体数字化
深度学习背景下的图像三维重建技术进展综述
三维重建是指从单张二维图像或多张二维图像中重建出物体的三维模型,并对三维模型进行纹理映射的过程。三维重建可获取从任意视角观测并具有色彩纹理的三维模型,是计算机视觉领域的一个重要研究方向。传统的三维重建方法通常需要输入大量图像,并进行相机参数估计、密集点云重建、表面重建和纹理映射等多个步骤。近年来,深度学习背景下的图像三维重建受到了广泛关注,并表现出了优越的性能和发展前景。
一点人工一点智能
2023/01/07
6.7K0
深度学习背景下的图像三维重建技术进展综述
推荐阅读
ICCV 2023 | 单阶段扩散神经辐射场:3D生成与重建的统一方法
4880
VoxGRAF:基于稀疏体素的快速三维感知图像合成
1.3K0
CVPR 2023 | Next3D: 用于 3D 感知头部头像的生成神经纹理栅格化
9950
4K4D:对4K分辨率实现实时4D视角合成
8590
CVPR 2024 | ConTex-Human:纹理一致的单视图人体自由视图渲染
6000
NeurIPS 2022 | GeoD:用几何感知鉴别器改进三维感知图像合成
6680
InstantMesh:利用稀疏视图大规模重建模型从单张图像高效生成3D网格
3K0
3D视频人物肖像生成新突破!港科大、清华等发布AniPortraitGAN,面部表情、肩部运动全可控
7000
CLIFF : 结合整帧位置信息的人体姿态和形状估计
1.7K0
撸猫何必要真猫,一张靓照也可以!斯坦福英伟达3D版神笔马良连屠两榜,3D合成7倍速
4490
纯卷积BEV模型的巅峰战力 | BEVENet不用Transformer一样成就ADAS的量产未来
1.4K0
SIGGRAPH 2023 | 用于实时辐射场渲染的 3D Gaussian Splatting
1.8K0
CVPR 2023 | OTAvartar:具有可控三平面渲染交互的单样本说话脸化身
6990
单图秒变3D对象,还可交互实时编辑!Stability AI中科大校友新作
1300
一张照片生成3D头像!苹果新模型击败StyleGAN2,表情光线都能调,网友:要用于MR?
4440
证件照转数字人只需几秒钟,微软实现首个3D扩散模型高质量生成效果,换装改形象一句话搞定 | CVPR 2023
8450
基于 Transformer 的多模态融合方法用于语义分割 !
1.1K0
清华大学&英伟达最新|Occ3D:通用全面的大规模3D Occupancy预测基准
1.3K0
SIGGRAPH Asia 2023 | 利用形状引导扩散进行单张图像的3D人体数字化
5420
深度学习背景下的图像三维重建技术进展综述
6.7K0
相关推荐
ICCV 2023 | 单阶段扩散神经辐射场:3D生成与重建的统一方法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档