Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >机器学习-决策树(Decision Tree)案例

机器学习-决策树(Decision Tree)案例

作者头像
XXXX-user
发布于 2019-09-19 07:06:28
发布于 2019-09-19 07:06:28
93700
代码可运行
举报
文章被收录于专栏:不仅仅是python不仅仅是python
运行总次数:0
代码可运行

背景介绍

这是我最喜欢的算法之一,我经常使用它。它是一种监督学习算法,主要用于分类问题。令人惊讶的是,它适用于分类和连续因变量。在该算法中,我们将总体分成两个或更多个同类集。这是基于最重要的属性/独立变量来完成的,以尽可能地作为不同的组。有关详细信息,请参阅简化决策树:https://www.analyticsvidhya.com/blog/2016/04/complete-tutorial-tree-based-modeling-scratch-in-python/

在上图中,您可以看到人口根据多个属性分为四个不同的组,以识别“他们是否会玩”。为了将人口分成不同的异构群体,它使用各种技术,如基尼,信息增益,卡方,熵。

理解决策树如何工作的最好方法是玩Jezzball--一款来自微软的经典游戏(如下图所示)。基本上,你有一个移动墙壁的房间,你需要创建墙壁,以便最大限度的区域被球清除。

所以,每次你用墙隔开房间时,你都试图在同一个房间里创造2个不同的人口。决策树以非常类似的方式工作,通过将人口分成尽可能不同的群体。

接下来看使用Python Scikit-learn的决策树案例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score

# read the train and test dataset
train_data = pd.read_csv('train-data.csv')
test_data = pd.read_csv('test-data.csv')

# shape of the dataset
print('Shape of training data :',train_data.shape)
print('Shape of testing data :',test_data.shape)

train_x = train_data.drop(columns=['Survived'],axis=1)
train_y = train_data['Survived']

test_x = test_data.drop(columns=['Survived'],axis=1)
test_y = test_data['Survived']
model = DecisionTreeClassifier()
model.fit(train_x,train_y)

# depth of the decision tree
print('Depth of the Decision Tree :', model.get_depth())

# predict the target on the train dataset
predict_train = model.predict(train_x)
print('Target on train data',predict_train) 

# Accuray Score on train dataset
accuracy_train = accuracy_score(train_y,predict_train)
print('accuracy_score on train dataset : ', accuracy_train)

# predict the target on the test dataset
predict_test = model.predict(test_x)
print('Target on test data',predict_test) 

# Accuracy Score on test dataset
accuracy_test = accuracy_score(test_y,predict_test)
print('accuracy_score on test dataset : ', accuracy_test)

上面代码运行结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Shape of training data : (712, 25)
Shape of testing data : (179, 25)
Depth of the Decision Tree : 19
Target on train data [0 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0
 1 0 0 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 1 1 1 0 1 0 01 0 0 0 0 0
 0 1 1 0 0 1 0 0 1 1 1 0 0 0 1 0 1 0 0 1 0 0 0 1 1 0 0 1 0 1 11 0 0 0 0 0
 0 0 0 0 1 0 0 1 0 1 0 1 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 1 0 0 00 1 0 1 1 0
 0 0 0 1 1 0 0 1 0 0 1 0 1 1 0 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0 00 0 1 0 0 1
 0 1 1 1 1 0 0 1 0 1 0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0 0 1 0 0 00 0 0 0 0 0
 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 1 1 01 0 0 0 1 0
 0 1 1 0 1 1 1 0 1 1 0 0 1 0 1 1 1 1 1 0 0 1 0 0 0 1 1 0 0 1 10 0 0 0 0 0
 0 0 1 1 0 1 1 0 1 0 1 1 1 0 0 0 1 0 1 1 0 0 0 0 1 0 1 1 0 0 00 0 0 0 0 1
 1 0 0 1 1 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 1 00 0 1 0 0 0
 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 1 0 0 0 0 1 0 0 1 1 1 1 01 1 0 1 1 1
 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 1 0 0 1 0 1 0 1 1 11 0 0 1 0 0
 0 1 0 0 0 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 1 10 0 0 0 0 0
 0 0 1 1 1 0 0 1 0 1 1 0 1 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 00 0 0 1 0 1
 1 0 0 0 0 1 0 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 1 1 1 01 0 1 0 0 1
 0 0 0 1 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 0 1 1 0 1 0 0 0 0 11 0 1 1 1 0
 1 0 1 0 1 1 0 1 0 1 0 0 1 0 0 1 0 1 1 0 1 0 0 0 1 0 1 0 0 0 00 0 0 0 0 1
 0 0 0 1 0 1 1 1 1 0 1 1 0 0 1 0 1 0 0 1 0 0 1 1 1 1 0 1 0 0 01 0 1 0 1 0
 1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 00 0 1 0 1 0
 1 0 1 1 1 0 0 1 0]
accuracy_score on train dataset :  0.9859550561797753
Target on test data [0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 01 1 1 1 0 0 1 0 1 1 0 1 1 1 1 0
 1 0 0 0 1 0 0 0 1 1 0 1 1 1 0 0 1 1 1 0 1 1 1 0 1 1 1 0 0 0 00 1 0 0 0 0
 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 1 11 0 1 1 0 1
 0 1 0 0 0 0 1 1 1 1 0 1 1 1 1 1 0 0 1 1 0 0 1 1 0 0 0 1 0 1 01 0 0 0 1 0
 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 1 0 1 1 0 1 0 0 0 0 0]
accuracy_score on test dataset :  0.770949720670391
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 yale记 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
机器学习-随机森林(Random Forest)
随机森林是一组决策树的商标术语。在随机森林中,我们收集了决策树(也称为“森林”)。为了基于属性对新对象进行分类,每棵树都有一个分类,我们称该树对该类“投票”。森林选择投票最多的类别(在森林中的所有树木上)。
XXXX-user
2019/10/16
8490
机器学习-支持向量机(SVM:Support Vector Machine)案例
我第一次听到“支持向量机”这个名字,我觉得,如果这个名字本身听起来那么复杂,那么这个概念的表述将超出我的理解范围。 幸运的是,我看到了一些大学讲座视频,并意识到这个工具是多么简单有效。 在本文中,我们将讨论支持向量机如何工作。 本文适合那些对此算法知之甚少且对学习新技术有好奇心的读者 。 在以下文章中,我们将详细探讨该技术,并分析这些技术比其他技术更强的案例。
XXXX-user
2019/09/25
1.1K0
机器学习-支持向量机(SVM:Support Vector Machine)案例
机器学习-朴素贝叶斯(Naive Bayes)案例
这是一种基于贝叶斯定理的分类技术,假设预测变量之间具有独立性。简而言之,朴素贝叶斯分类器假定类中某个特定特征的存在与任何其他特征的存在无关。例如,如果水果是红色,圆形且直径约3英寸,则可以将其视为苹果。即使这些特征相互依赖或依赖于其他特征的存在,朴素的贝叶斯分类器也会考虑所有这些特征,以独立地促成该果实是苹果的可能性。
XXXX-user
2019/09/25
8800
机器学习-朴素贝叶斯(Naive Bayes)案例
机器学习-Logistic回归(Logistic Regression)案例
不要被它的名字弄糊涂!它是一种分类而非回归算法。它用于根据给定的自变量集估计离散值(二进制值,如0/1,yes/no,true/false)。简单来说,它通过将数据拟合到logit函数来预测事件发生的概率。因此,它也被称为logit回归。由于它预测概率,因此其输出值介于0和1之间(如预期的那样)。
XXXX-user
2019/09/17
3.7K0
机器学习-Logistic回归(Logistic Regression)案例
机器学习-K邻近算法(KNN)简介
在我们遇到的所有机器学习算法中,KNN很容易成为最简单的学习方法。 尽管它很简单,但是事实证明它在某些任务上非常有效(正如您将在本文中看到的那样)。
XXXX-user
2019/10/14
1.8K0
机器学习-K邻近算法(KNN)简介
用 Python 轻松实现机器学习
朴素贝叶斯(Naïve Bayes)是一种分类技术,它是许多分类器建模算法的基础。基于朴素贝叶斯的分类器是简单、快速和易用的机器学习技术之一,而且在现实世界的应用中很有效。
用户1880875
2021/09/07
5570
【机器学习】第二部分下:决策树回归
年龄:1-青年,2-中年,3-老年 学历:1-本科,2-硕士,3-博士 经历:1-出道,2-一般,3-老手,4-骨灰 性别:1-男性,2-女性
杨丝儿
2022/02/17
8860
【机器学习】第二部分下:决策树回归
机器学习-线性回归(Linear Regression)案例
线性回归用于根据连续变量估算实际值(房屋成本,看涨期权,总销售额等)。在这里,我们通过拟合最佳线来建立独立变量和因变量之间的关系。该最佳拟合线称为回归线,并由线性方程Y = a * X + b表示。
XXXX-user
2019/09/12
2.2K0
机器学习-线性回归(Linear Regression)案例
Python机器学习库scikit-learn实践
一、概述 以最广泛的分类算法为例,大致可以分为线性和非线性两大派别。线性算法有著名的逻辑回归、朴素贝叶斯、最大熵等,非线性算法有随机森林、决策树、神经网络、核机器等等。线性算法举的大旗是训练和预测的效率比较高,但最终效果对特征的依赖程度较高,需要数据在特征层面上是线性可分的。因此,使用线性算法需要在特征工程上下不少功夫,尽量对特征进行选择、变换或者组合等使得特征具有区分性。而非线性算法则牛逼点,可以建模复杂的分类面,从而能更好的拟合数据。 那在我们选择了特征的基础上,哪个机器学习算法能取得更
机器学习AI算法工程
2018/03/13
9150
【机器学习】第三部分贰:决策树分类
决策树是一种常见的机器学习方法,其核心思想是相同(或相似)的输入产生相同(或相似)的输出,通过树状结构来进行决策,其目的是通过对样本不同属性的判断决策,将具有相同属性的样本划分到一个叶子节点下,从而实现分类或回归. 以下是几个生活中关于决策树的示例.
杨丝儿
2022/02/17
1.8K0
【机器学习】第三部分贰:决策树分类
机器学习实战第2天:幸存者预测任务
在泰坦尼克号灾难中,了解乘客生存状况是一个重要而挑战性的任务。这个任务的目标是通过分析乘客的各种特征,构建预测模型,以预测一个乘客在沉船事件中是否幸存。数据集提供了关于每位乘客的多个方面的信息,如性别、年龄、客舱等级等。
Nowl
2024/01/18
1900
机器学习实战第2天:幸存者预测任务
使用折外预测(oof)评估模型的泛化性能和构建集成模型
机器学习算法通常使用例如 kFold等的交叉验证技术来提高模型的准确度。在交叉验证过程中,预测是通过拆分出来的不用于模型训练的测试集进行的。这些预测被称为折外预测(out-of-fold predictions)。折外预测在机器学习中发挥着重要作用,可以提高模型的泛化性能。
deephub
2022/03/12
9830
使用折外预测(oof)评估模型的泛化性能和构建集成模型
基于Titanic数据集的完整数据分析
本文是一个极度适合入门数据分析的案例,采用的是经典数据集:泰坦尼克数据集(train部分),主要内容包含:
皮大大
2023/05/05
1.3K0
机器学习实战第3天:手写数字识别
使用train_test_split函数将数据集分为训练集和测试集,测试集比例为0.2
Nowl
2024/01/18
3270
机器学习实战第3天:手写数字识别
深入了解决策树:机器学习中的经典算法
决策树(Decision Tree)是一种流行的机器学习算法,以其简单、直观的特点,在分类和回归任务中得到了广泛应用。它的可解释性和可视化能力使其成为许多数据科学家的首选工具。本文将详细探讨决策树的基本概念、工作原理、构建过程、优缺点、实际应用场景,并提供Python代码示例来展示如何实现和使用决策树。
平凡之路.
2024/11/21
3050
深入了解决策树:机器学习中的经典算法
机器学习之决策树(下)
这就是所谓的过拟合,当深度越深,分的次数越多,训练集的错误率还ok,但是在测试集就完了。
润森
2019/10/09
4820
机器学习之决策树(下)
Scikit-learn机器学习建模的万能模板!
【导读】大家好,我是泳鱼。一个乐于探索和分享AI知识的码农!今天的这篇文章带大家轻松get机器学习建模方法~
算法进阶
2023/09/15
2780
Scikit-learn机器学习建模的万能模板!
深度学习实战:4.通过scikit-learn模板两步构建自己的机器学习模型
最近看到一个实用的搭建机器算法的模板,与大家分享。只需要两步就能构建起自己的机器学习模型:
AiCharm
2023/05/15
4540
深度学习实战:4.通过scikit-learn模板两步构建自己的机器学习模型
数据挖掘从入门到放弃(二):决策树
“ 上篇内容介绍的是线性回归和逻辑回归模型,输入输出是连续值,分类模型的输出是一个有限集合,本篇介绍决策分类树算法”
数据社
2020/05/25
6420
机器学习之鸢尾花-决策树
Decision Trees (DTs) 是一种用来 classification 和 regression 的无参监督学习方法。其目的是创建一种模型从数据特征中学习简单的决策规则来预测一个目标变量的值。
python与大数据分析
2022/03/11
4920
机器学习之鸢尾花-决策树
相关推荐
机器学习-随机森林(Random Forest)
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验