小晨精品06-机器学习_(决策树分类算法与应用)(优秀)
- 格式:docx
- 大小:163.02 KB
- 文档页数:9
决策树例题经典案例1. 引言决策树是一种常见且有用的机器学习算法,在许多实际问题中都得到了广泛应用。
它是一种基于树结构的分类模型,通过对数据的特征进行判断,构建出一个树状的决策过程。
本文将通过一个经典的案例,来介绍决策树的基本原理和应用。
2. 案例背景假设我们是一家电子商务平台的运营团队,我们最近推出了一种新产品,并希望根据用户的特征来预测他们是否会购买这个产品。
为了解决这个问题,我们决定使用决策树算法来构建一个分类模型。
3. 数据集介绍我们已经收集了一些用户的相关数据,包括年龄、性别、收入和是否购买产品。
数据集如下:用户ID年龄性别收入是否购买产品125男5000元以上是230女3000-5000元是335男3000-5000元否440男3000-5000元否535男3000-5000元是645女5000元以上是750男2000-3000元否860男3000-5000元是4. 构建决策树模型在构建决策树模型之前,我们需要对数据进行预处理。
首先,将年龄、性别和收入这些特征进行编码转换,方便计算机处理。
然后,将数据集分为训练集和测试集,训练集用于构建模型,测试集用于评估模型的性能。
接下来,我们使用Python中的scikit-learn库来构建决策树模型。
首先,导入相关的库和模块:from sklearn import treeimport pandas as pd然后,读取数据并进行特征编码:data = pd.read_csv('data.csv')# 特征编码data['年龄'] = data['年龄'].map({'25': 0, '30': 1, '35': 2, '40': 3, '45': 4, '50': 5, '60': 6}) data['性别'] = data['性别'].map({'男': 0, '女': 1}) data['收入'] = data['收入'].map({'5000元以上': 0, '3000-5000元': 1, '2000-3000元': 2})# 提取特征和标签X = data[['年龄', '性别', '收入']]y = data['是否购买产品']接着,创建决策树模型并训练:# 创建决策树模型model = tree.DecisionTreeClassifier()# 训练模型model.fit(X, y)最后,使用测试集评估模型的性能:```python # 读取测试集数据 test_data =pd.read_csv(’test_data.csv’)特征编码test_data[‘年龄’] = test_data[‘年龄’].map({’25’: 0, ‘30’: 1, ‘35’: 2, ‘40’: 3, ‘45’: 4, ‘50’: 5, ‘60’: 6}) test_data[‘性别’] = test_data[‘性别’].map({’男’: 0, ‘女’: 1}) test_data[‘收入’] = test_data[‘收入’].map({’5000元以上’: 0, ‘3000-5000元’: 1, ‘2000-3000元’: 2})提取特征和标签X_test = test_data[[‘年龄’, ‘性别’, ‘收入’]] y_test = test_data[‘是否购买产品’]预测结果y_pred = model.predict(X_test)计算准确率accuracy = (y_pred == y_test).mean() print(。
决策树的三种算法一、决策树算法的简单介绍决策树算法就像是一个超级智能的树状决策指南。
你可以把它想象成一棵倒着长的树,树根在上面,树枝和树叶在下面。
它的任务呢,就是根据不同的条件来做出各种决策。
比如说,你想决定今天穿什么衣服,天气就是一个条件,如果天气冷,你可能就选择穿厚衣服;如果天气热,那薄衣服就比较合适啦。
决策树算法在很多地方都超级有用,像预测一个人会不会买某个商品,或者判断一个邮件是不是垃圾邮件之类的。
二、决策树的三种算法1. ID3算法这个算法就像是一个很会找重点的小机灵鬼。
它主要是根据信息增益来构建决策树的。
啥是信息增益呢?就是通过计算某个属性带来的信息量的增加。
比如说,在判断一个水果是苹果还是香蕉的时候,颜色这个属性可能就有很大的信息增益。
如果一个水果是红色的,那它是苹果的可能性就比较大。
ID3算法会优先选择信息增益大的属性来作为树的节点,这样就能更快更准地做出决策啦。
不过呢,这个算法也有个小缺点,就是它比较容易对噪声数据敏感,就像一个很敏感的小娃娃,稍微有点风吹草动就可能受到影响。
2. C4.5算法C4.5算法就像是ID3算法的升级版。
它在ID3算法的基础上做了一些改进。
它不仅仅考虑信息增益,还考虑了信息增益率。
这就好比是一个更加全面考虑的智者。
通过考虑信息增益率,它能够更好地处理那些属性值比较多的情况。
比如说,在一个数据集中有一个属性有很多很多不同的值,C4.5算法就能比ID3算法更好地处理这种情况,不会轻易地被这种复杂情况给弄晕。
而且C4.5算法还能够处理连续的属性值,这就像是它多了一项特殊的技能,让它在更多的情况下都能发挥作用。
3. CART算法CART算法又有自己的特点。
它使用的是基尼系数来选择属性进行划分。
基尼系数就像是一个衡量公平性的小尺子,在决策树这里,它是用来衡量数据的纯度的。
如果基尼系数越小,说明数据越纯,就越容易做出准确的决策。
CART算法既可以用于分类问题,就像前面说的判断水果是苹果还是香蕉这种,也可以用于回归问题,比如预测房价之类的。
决策树例题经典案例决策树是一种常用的机器学习算法,它可以用于解决分类和回归问题。
在这篇文档中,我们将探讨一个经典的决策树例题,并详细介绍如何使用决策树算法来解决这个问题。
首先,让我们来看看这个经典案例的背景。
假设我们是一个电商平台,我们希望根据用户的购买历史和个人信息,来预测用户是否会购买一款新的产品。
为了解决这个问题,我们将使用决策树算法来构建一个模型,用于预测用户购买的结果。
接下来,我们需要收集数据来训练决策树模型。
针对这个问题,我们可以收集一些用户的购买历史数据和个人信息数据,比如用户的性别、年龄、收入水平,以及之前购买的产品的种类和数量等。
在收集到足够的数据后,我们可以开始构建决策树模型了。
首先,我们需要将数据分成训练集和测试集,通常我们将数据的70%用于训练,30%用于测试。
然后,我们可以使用训练集的数据来构建决策树模型。
在构建决策树模型之前,我们需要选择一个合适的划分准则来衡量每个特征的重要性。
在这个例子中,我们可以使用基尼指数作为划分准则。
基尼指数用于度量一个数据集的不纯度,越小表示数据越纯。
接下来,我们需要选择一个最佳的特征来作为根节点。
在这个例子中,我们可以选择购买历史中最常购买的产品作为根节点。
然后,我们根据该特征的取值将数据划分成若干个子集,每个子集对应一个分支节点。
在每个分支节点中,我们需要继续选择一个最佳的特征来作为子节点。
在选择特征的过程中,我们可以使用递归的方法,不断地将数据划分为更小的子集,直到满足某个停止条件。
在构建决策树的过程中,我们需要注意一些问题。
首先,我们需要处理缺失值。
在训练集中,有些用户可能没有提供某些特征的值,我们可以使用一些方法来填补这些缺失值,比如使用平均值或中位数。
其次,我们需要处理特征的取值类型。
有些特征是离散型的,有些是连续型的。
对于离散型的特征,我们可以直接将其作为树的分支节点,而对于连续型的特征,我们需要使用一些方法将其转化为离散型的特征,比如使用二分法来分割特征的取值范围。
决策树在生活中的例子决策树是一种常见的机器学习算法,它通过一系列的决策规则来对数据进行分类或预测。
这些决策规则可以用树状图形式表示,每个内部节点表示一个特征或属性,每个叶子节点表示一个类别或是一个预测的结果。
决策树的可解释性和易于理解的特点使得它在生活中有着广泛的应用。
以下是生活中常见的决策树的例子:1.疾病诊断决策树:医生在进行疾病诊断时,通常会根据患者的症状和检测结果,利用决策树来判断患者可能患有的疾病类型。
例如,医生可以通过询问患者是否有发烧、咳嗽等症状来进行初步判断,然后根据进一步的检测结果来确认疾病的类型。
2.贷款申请决策树:银行在进行贷款申请审核时,会根据申请人的个人信息(如年龄、工作年限、征信记录等)以及贷款金额等因素,利用决策树来判断该申请是否应该得到批准。
例如,银行可以根据申请人的年龄和工作年限来判断其信用等级,从而决定是否批准贷款申请。
3.产品推荐决策树:电商网站通常会根据用户的浏览历史、购买记录等信息,利用决策树来推荐相关产品给用户。
例如,当一个用户浏览了几个相似的产品时,网站可以根据用户的浏览记录和购买记录来推测该用户对其他相似产品的兴趣,从而向用户推荐相关的产品。
4.旅行路线决策树:当人们计划旅行时,他们通常会面临选择旅行目的地和路线的问题。
决策树可以帮助人们做出决策。
例如,当人们根据旅行偏好、时间和预算等因素,在一组候选目的地中进行选择时,决策树可以根据这些因素来帮助人们决定最佳的旅行目的地和路线。
5.个人理财决策树:当人们面临个人理财决策时,决策树可以作为辅助工具。
例如,当人们考虑是否购买其中一种投资产品时,决策树可以根据他们的风险偏好、投资目标和市场状况等因素来帮助他们决策。
决策树还可以帮助人们制定个人预算和理财计划。
决策树在生活中的应用不仅限于上述例子,而且还可以扩展到更多的领域,例如教育、市场营销、自然灾害预测等。
通过采用适当的特征选择和数据预处理方法,决策树能够提供准确和可解释的结果,使得人们能够更好地做出决策。
决策树算法例题
一、决策树基本概念与原理
决策树是一种基于树结构的分类与回归模型。
它通过一系列的问题对数据进行划分,最终得到叶子节点对应的分类结果或预测值。
决策树的构建过程通常采用自上而下、递归划分的方法。
二、决策树算法实例解析
以一个简单的决策树为例,假设我们要预测一个人是否喜欢户外运动。
已知特征:性别、年龄、是否喜欢晒太阳。
可以通过以下决策树划分:
1.根据性别划分,男性为喜欢户外运动,女性为不喜欢户外运动。
2.若性别为男性,再根据年龄划分,年龄小于30分为喜欢户外运动,大于30分为不喜欢户外运动。
3.若性别为女性,无论年龄如何,均分为喜欢户外运动。
通过这个决策树,我们可以预测一个人是否喜欢户外运动。
三、决策树算法应用场景及优缺点
1.应用场景:分类问题、回归问题、关联规则挖掘等。
2.优点:易于理解、可解释性强、泛化能力较好。
3.缺点:容易过拟合、对噪声敏感、构建过程耗时较长。
四、实战演练:构建决策树解决实际问题
假设我们要预测房价,已知特征:面积、卧室数量、卫生间数量、距市中心距离。
可以通过构建决策树进行预测:
1.选择特征:根据相关性分析,选择距市中心距离作为最佳划分特征。
2.划分数据集:将数据集划分为训练集和测试集。
3.构建决策树:采用递归划分方法,自上而下构建决策树。
4.模型评估:使用测试集评估决策树模型的预测性能。
通过以上步骤,我们可以运用决策树算法解决实际问题。
基于决策树的算法分析与应用示例在机器学习领域,决策树是一个经典的算法,它可以在面对大量数据时进行快速且可靠的分类或回归。
本文将介绍决策树算法的原理与应用,并通过一个具体的案例来展示其实际应用价值。
一、什么是决策树算法决策树是一种树形结构的分类模型,它的构建过程就像是一次“递归”的决策过程。
假设我们有一组数据,每个数据点都有若干个特征(即不同的属性),我们要根据这些特征来决定其类别(如是/否、高/中/低等)。
而决策树的生成就是一个逐步“分治”的过程,将原始数据分成不同子集,并根据不同特征来分别处理,最终得到一棵带有判定条件的树形结构。
决策树的构建过程可以分为三个步骤:特征选择、决策树生成和决策树剪枝。
其中,特征选择是指从所有特征中选出一个最佳特征来作为当前的分类依据;决策树生成是指利用选定的特征对数据进行划分,生成一棵完整的决策树;决策树剪枝是指对已经生成的决策树进行优化,去除一些不必要的节点和分枝,以避免过拟合等问题。
除了常见的二叉树决策树外,还有多叉树、CART树、C4.5树、ID3树等多种类型的决策树算法。
它们在特征选择、剪枝等方面有所不同,但本质上都是基于“树形结构”来完成分类或回归任务的。
二、决策树算法的应用示例决策树算法有许多实际应用,如金融风险评估、医学诊断、信用卡反欺诈等。
这里我们以一个简单的基于决策树的鸢尾花分类为例来说明决策树的应用过程。
鸢尾花数据集是机器学习中常用的一个数据集,它包含了150条记录,每条记录都有四个特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度。
根据这些特征,我们需要判断鸢尾花属于哪种类型:山鸢尾(Iris-setosa)、变色鸢尾(Iris-versicolor)或维吉尼亚鸢尾(Iris-virginica)。
以下是如何用Python和sklearn库来实现这一任务:```python# 引入相关库和数据集from sklearn.datasets import load_irisfrom sklearn.tree import DecisionTreeClassifierfrom sklearn.model_selection import train_test_splitiris = load_iris()X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3, random_state=42)# 构建决策树模型并进行训练clf = DecisionTreeClassifier(criterion='entropy', max_depth=10, random_state=42)clf.fit(X_train, y_train)# 预测并评估模型准确率y_pred = clf.predict(X_test)score = clf.score(X_test, y_test)print(score)```上述代码首先引入了相关的Python库和鸢尾花数据集,并将数据集分为训练集和测试集。
分类决策树DecisionTreeClassifier详解介绍分类决策树(Decision Tree Classifier)是机器学习中一种常见且易于理解的分类算法。
它通过树状结构来表示实例可能的分类过程,每个内部节点表示一个属性上的判断条件,每个分支代表一个可能的属性值,每个叶节点代表一个分类结果。
下面将详细介绍分类决策树的基本概念、构建过程、优缺点以及实际应用。
一、基本概念1. 决策树:决策树是一种树形结构,其中每个内部节点表示在一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。
2. 根节点:决策树的顶部节点,包含对整个数据集的第一次划分。
3. 内部节点:决策树中的节点,它根据某个属性的值将数据集划分成子集,并且还有子节点。
4. 叶节点:决策树中没有子节点的节点,它表示一个类别或者决策结果。
5. 剪枝:为了防止过拟合,通过去掉决策树的一些分支来简化模型的过程。
二、构建过程分类决策树的构建通常包括以下步骤:1. 特征选择:选择合适的特征进行数据集的划分。
常见的特征选择算法有信息增益、增益率、基尼指数等。
2. 决策树生成:根据选择的特征评估标准,递归地生成决策树。
从根节点开始,对数据集进行划分,生成子节点。
重复此过程,直到满足停止条件(如达到最大深度、节点中样本数小于预设值等)。
3. 决策树剪枝:通过去掉决策树的一些分支来简化模型,防止过拟合。
剪枝策略包括预剪枝和后剪枝。
三、优缺点1. 优点:- 易于理解和解释:决策树的结构直观,易于理解和解释,适合非专业人士使用。
- 对数据预处理要求较低:决策树算法能够处理数值型和离散型数据,不需要过多的数据预处理。
- 能够处理非线性关系:决策树能够自动捕捉特征与目标变量之间的非线性关系。
- 对异常值和缺失值不敏感:决策树算法在一定程度上对异常值和缺失值具有鲁棒性。
2. 缺点:- 容易过拟合:决策树在生成过程中可能会过于复杂,导致过拟合现象。
常见机器学习算法的原理和应用分析机器学习(Machine Learning, ML)是人工智能(Artificial Intelligence, AI)的核心领域之一,是一种通过样本数据对机器进行训练、自主探索特征规律及进行预测、判断等任务的方法。
机器学习算法是机器学习的核心内容,针对不同的问题和数据,具有不同的算法模型。
本文将针对常见机器学习算法的原理和应用进行分析。
一、监督学习算法监督学习算法是最为常见的机器学习算法,它的训练样本包含输入和输出的对应关系。
在监督学习算法中,常用的模型有决策树、随机森林、朴素贝叶斯、支持向量机等。
1. 决策树决策树(Decision Tree)是一种基于树形结构进行决策分析的算法。
通过将数据样本划分成多个类别,并形成一颗树状结构,确定样本通过树状结构的哪个分支可归属于哪个类别。
在决策树的构建过程中,通常采用递归的形式,对样本数据进行分裂。
具体地,根据所有属性的每个划分,都计算一个信息增益,并选择信息增益最大的属性作为当前节点的划分属性,对该属性进行划分。
直到叶子节点的样本属于同一类,或者节点所代表的属性集合为空时迭代结束。
2. 随机森林随机森林(Random Forest)是一种基于多个决策树构建的集成模型,以降低模型方差,提高模型精度。
随机森林的构建方式是通过对多个决策树在选择属性、分裂点时采用随机方法,形成多个弱分类器,共同进行综合决策。
随机森林的训练过程中,先利用自助式(Bootstrap)采样原始数据形成数据集,再分别随机选择每棵树的属性和分裂点,构建决策树。
最后,通过投票方式将多个决策树的结果进行集成,形成一个最终的整体结果。
3. 朴素贝叶斯朴素贝叶斯(Naive Bayes)是一种基于贝叶斯定理而来的分类算法,其基本思想是通过先验概率和概率密度函数,通过样本数据推导后验概率,最后对样本进行分类。
朴素贝叶斯算法假设所有特征都是相互独立的,并把各个特征的概率合成后,再根据贝叶斯公式计算后验概率,进行分类。
决策树知识点总结1. 决策树算法原理决策树算法的核心思想是通过对特征进行逐步划分,将数据集划分为不同的子集,使得每个子集内的数据尽可能属于同一类别。
在划分过程中,算法会选择一个最优的特征进行划分,使得划分后的子集的纯度最大。
通常情况下,我们会选择信息增益或基尼指数作为划分标准,以找到最优的划分特征。
决策树算法的训练过程可以分为以下几步:(1)选择最优的划分特征:通过计算每个特征的信息增益或基尼指数,选择最优的划分特征。
(2)将数据集按照最优特征进行划分:根据最优特征的取值将数据集划分为不同的子集。
(3)递归的训练子树:对划分得到的每个子集进行递归的训练,直到满足停止条件为止。
这样就可以得到一棵完整的决策树,用于对新数据进行预测。
2. 常见的决策树算法目前比较常见的决策树算法包括ID3、C4.5、CART和CHAID等。
ID3(Iterative Dichotomiser 3)算法是一种基于信息增益进行特征选择的决策树算法。
该算法在每次划分时选择信息增益最大的特征进行划分,直到所有特征都被使用或者剩余数据集中的样本属于同一类别。
C4.5算法是ID3算法的改进版,它使用信息增益比进行特征选择,解决了ID3算法可能会选择取值较多的特征进行划分的问题。
CART(Classification And Regression Tree)算法可以用于分类和回归问题,它使用基尼指数进行特征选择,对分类问题得到的决策树是二叉树结构。
CHAID(Chi-squared Automatic Interaction Detection)算法是一种基于卡方检验进行特征选择的决策树算法,适用于分类问题。
3. 决策树的优缺点(1)优点:决策树算法易于理解和解释,生成的决策树可以直观地表示分类的过程和结果。
此外,决策树算法可以处理数值型和类别型的数据,对缺失值和异常值具有较好的鲁棒性。
另外,决策树算法可以自动选择特征,不需要人工选择。
决策树公式和原理宝子,今天咱来唠唠决策树这个超酷的东西。
决策树呢,就像是一棵倒着长的树,不过这棵树可神奇啦。
它有根节点、分支和叶节点。
根节点就是最开始的那个点,就像树的根一样,所有的决策都是从这儿开始发芽的呢。
比如说你在纠结今天是出去逛街还是在家看剧,这纠结的开始就是根节点啦。
那分支是啥呢?分支就像是从根节点伸出去的小树枝。
还是拿刚刚的例子说,如果你选择出去逛街,那关于去哪儿逛街,是去商场还是去小商业街,这不同的选择就像是不同的分支。
每个分支都代表着一种可能的决策方向。
叶节点就是这些树枝的尽头啦。
比如说你最后决定去商场逛街,然后在商场里选择了一家店,买了一件超好看的衣服,这个买衣服的结果就是一个叶节点。
它的原理其实就像是我们平时做决策的思路。
我们在生活中做决定的时候,也是一个一个问题去想的。
决策树就是把这个过程给整理得清清楚楚。
从数学公式的角度看,决策树主要是通过计算信息增益或者基尼指数这些东西来确定怎么分支的。
听起来有点复杂,咱简单说。
信息增益就像是在看哪个分支能够让我们对结果了解得更多。
比如说你有一堆水果,有苹果、香蕉和橙子。
你想把它们分类,那你可能会先看颜色这个属性,因为按照颜色来分,能让你更快地把这些水果分开,这个颜色属性就有比较大的信息增益。
基尼指数呢,也是类似的作用。
它是用来衡量一个节点里的数据有多“纯”。
如果一个节点里的数据都是一样的,那基尼指数就很小,就说明这个节点很“纯”啦。
就像一盒子里都是苹果,没有其他水果,那这个盒子里的数据就很“纯”。
决策树在好多地方都能用呢。
就像在预测天气的时候,如果我们要决定今天出门要不要带伞。
根节点可能就是看天气预报怎么说。
如果天气预报说可能有雨,那一个分支就是带伞出门,另一个分支就是不带伞赌一把。
然后再根据其他的因素,像是天空的云量啊,风的方向啊,继续分更多的分支。
最后得出一个比较靠谱的决策。
还有在商业里也很有用。
比如说一个公司要决定要不要推出一款新产品。
决策树算法应用和结果解读
决策树算法是一种常见的机器学习算法,广泛应用于分类和回归问题中。
该算法通过构建一棵树形结构,对数据进行有序、层次化的划分,以预测输出结果。
以下是决策树算法的应用和结果解读:
应用:
1. 分类问题:决策树算法可应用于二分类或多分类问题。
通过构建决策树模型,将数据集划分为不同的类别,根据树的节点和分支规则,对新的输入数据进行分类预测。
2. 回归问题:除了分类问题外,决策树算法也可应用于回归问题。
通过构建决策树模型,对连续的输出变量进行预测,根据树的节点和分支规则,对新的输入数据进行回归分析。
结果解读:
1. 树形结构:决策树算法的结果通常以树形结构的形式展示,树中的每个节点代表一个特征或属性测试,分支代表测试结果,叶子节点代表最终的分类或回归结果。
2. 特征重要性:在决策树模型中,每个特征在决策树中的位置和重要性可以被评估和解读。
特征的重要性通常可以通过特征的分裂信息、基尼不纯度等指标来衡量。
3. 分类结果:对于分类问题,决策树的结果可以展示各类别在每个节点上的分布情况,以及每个分支所代表的类别。
通过观察树的节点和分支规则,可以了解不同类别之间的划分依据。
4. 回归结果:对于回归问题,决策树的结果可以展示每个节点的预测值和实际值之间的差异,以及每个分支所代表的预测值范围。
通过观察树的节点和分支规则,可以了解预测值与实际值之间的关系。
总之,决策树算法的应用广泛,结果易于解读。
通过观察决策树的树形结构和特征重要性、分类或回归结果,可以对数据集进行有效的分析和预测。
一、实验背景与目的决策树是一种常用的机器学习分类算法,它通过树形结构对数据进行分类,具有直观、易于理解和解释的特点。
本实验旨在通过构建决策树模型,对某数据集进行分类,并评估模型性能。
二、实验环境与数据1. 实验环境:- 操作系统:Windows 10- 编程语言:Python- 数据处理库:Pandas、NumPy- 机器学习库:Scikit-learn2. 数据集:本实验采用鸢尾花数据集(Iris dataset),该数据集包含150个样本,每个样本有4个特征(花瓣长度、花瓣宽度、花萼长度、花萼宽度)和1个标签(类别:Iris-setosa、Iris-versicolor、Iris-virginica)。
三、实验步骤1. 数据预处理:- 加载数据集,并使用Pandas库进行数据清洗和预处理。
- 将数据集分为训练集和测试集,采用8:2的比例。
- 对数据进行归一化处理,使特征值在[0, 1]范围内。
2. 决策树模型构建:- 使用Scikit-learn库中的DecisionTreeClassifier类构建决策树模型。
- 设置模型参数,如树的深度、最大叶子节点数等。
3. 模型训练:- 使用训练集对决策树模型进行训练。
4. 模型评估:- 使用测试集对训练好的模型进行评估,计算分类准确率、召回率、F1值等指标。
5. 结果分析:- 分析模型的性能,并探讨不同参数设置对模型性能的影响。
四、实验结果与分析1. 模型参数设置:- 树的深度:10- 最大叶子节点数:202. 模型性能评估:- 分类准确率:0.9778- 召回率:0.9778- F1值:0.97783. 结果分析:- 决策树模型在鸢尾花数据集上取得了较好的分类效果,准确率达到97.78%。
- 通过调整模型参数,可以进一步提高模型性能。
- 决策树模型易于理解和解释,有助于分析数据特征和分类规则。
五、实验结论本实验通过构建决策树模型,对鸢尾花数据集进行分类,并取得了较好的分类效果。
机器学习(MachineLearning)算法总结-决策树⼀、机器学习基本概念总结分类(classification):⽬标标记为类别型的数据(离散型数据)回归(regression):⽬标标记为连续型数据有监督学习(supervised learning):训练集有类别标记⽆监督学习(unsupervised learning):训练集⽆类别标记半监督学习(semi-supervised learning):有类别标记的训练集+⽆类别标记的训练集机器学习步骤的框架:step1:把数据拆分为训练集和测试集step2:⽤训练集和特征集的特征向量来训练算法step3:⽤学习来的算法(进⾏训练的模型)运⽤在测试集上来评估算法机器学习中分类和预测算法的评估:准确率速度强壮性(当数据缺失情况下,算法的准确性)可规模性(当数据变⼤时,算法的准确性)可解释性(算法的结果是否可以解释该种现象)⼆、决策树1.决策树基本概念:是⼀个类似于流程图的树结构(可以是⼆叉树或⾮⼆叉树)其每个⾮叶节点表⽰⼀个特征属性上的测试每个分⽀代表这个特征属性在某个值域上的输出⽽每个叶节点存放⼀个类别使⽤决策树进⾏决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分⽀,直到到达叶⼦节点,将叶⼦节点存放的类别作为决策结果的过程2.决策树构造的关键决策树最重要的是决策树的构造。
所谓决策树的构造就是进⾏属性选择度量确定各个特征属性之间的拓扑结构。
构造决策树的关键步骤是分裂属性。
所谓分裂属性就是在某个节点处按照某⼀特征属性的不同划分构造不同的分⽀,其⽬标是让各个分裂⼦集尽可能地“纯”。
尽可能“纯”就是尽量让⼀个分裂⼦集中待分类项属于同⼀类别。
分裂属性分为三种不同的情况:属性是离散值且不要求⽣成⼆叉决策树。
此时⽤属性的每⼀个划分作为⼀个分⽀。
属性是离散值且要求⽣成⼆叉决策树。
此时使⽤属性划分的⼀个⼦集进⾏测试,按照“属于此⼦集”和“不属于此⼦集”分成两个分⽀。
机器学习算法day04_决策树分类算法及应用课程大纲
课程目标:
1、理解决策树算法的核心思想
2、理解决策树算法的代码实现
3、掌握决策树算法的应用步骤:数据处理、建模、运算和结果判定
1. 决策树分类算法原理
1.1 概述
决策树(decision tree)——是一种被广泛使用的分类算法。
相比贝叶斯算法,决策树的优势在于构造过程不需要任何领域知识或参数设置
在实际应用中,对于探测式的知识发现,决策树更加适用
1.2 算法思想
通俗来说,决策树分类的思想类似于找对象。
现想象一个女孩的母亲要给这个女孩介绍男朋友,于是有了下面的对话:
女儿:多大年纪了?
母亲:26。
女儿:长的帅不帅?
母亲:挺帅的。
女儿:收入高不?
母亲:不算很高,中等情况。
女儿:是公务员不?
母亲:是,在税务局上班呢。
女儿:那好,我去见见。
这个女孩的决策过程就是典型的分类树决策。
实质:通过年龄、长相、收入和是否公务员对将男人分为两个类别:见和不见
假设这个女孩对男人的要求是:30岁以下、长相中等以上并且是高收入者或中等以上收入的公务员,那么这个可以用下图表示女孩的决策逻辑
上图完整表达了这个女孩决定是否见一个约会对象的策略,其中:
◆绿色节点表示判断条件
◆橙色节点表示决策结果
◆箭头表示在一个判断条件在不同情况下的决策路径
图中红色箭头表示了上面例子中女孩的决策过程。
这幅图基本可以算是一颗决策树,说它“基本可以算”是因为图中的判定条件没有量化,如收入高中低等等,还不能算是严格意义上的决策树,如果将所有条件量化,则就变成真正的决策树了。
决策树分类算法的关键就是根据“先验数据”构造一棵最佳的决策树,用以预测未知数据的类别
决策树:是一个树结构(可以是二叉树或非二叉树)。
其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。
使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。
1.3 决策树构造
1.3.1 决策树构造样例
样本中有2个属性,A0表示是否红苹果。
A1表示是否大苹果。
假如要根据这个数据样本构建一棵自动判断苹果好坏的决策树。
由于本例中的数据只有2个属性,因此,我们可以穷举所有可能构造出来的决策树,就2棵,如下图所示:
显然左边先使用A0(红色)做划分依据的决策树要优于右边用A1(大小)做划分依据的决策树。
当然这是直觉的认知。
而直觉显然不适合转化成程序的实现,所以需要有一种定量的考察来评价这两棵树的性能好坏。
决策树的评价所用的定量考察方法为计算每种划分情况的信息熵增益:
如果经过某个选定的属性进行数据划分后的信息熵下降最多,则这个划分属性是最优选择1.3.2 属性划分选择(即构造决策树)的依据
熵:信息论的奠基人香农定义的用来信息量的单位。
简单来说,熵就是“无序,混乱”的程度。
通过计算来理解:
1、原始样本数据的熵:
样例总数:4
好苹果:2
坏苹果:2
熵: -(1/2 * log(1/2) +1/2 * log(1/2)) = 1
信息熵为1表示当前处于最混乱,最无序的状态。
2、两颗决策树的划分结果熵增益计算
●树1先选A0作划分,各子节点信息熵计算如下:
0,1叶子节点有2个正例,0个负例。
信息熵为:e1 = -(2/2 * log(2/2) + 0/2 * log(0/2)) = 0。
2,3叶子节点有0个正例,2个负例。
信息熵为:e2 = -(0/2 * log(0/2) + 2/2 * log(2/2)) = 0。
因此选择A0划分后的信息熵为每个子节点的信息熵所占比重的加权和:E = e1*2/4 + e2*2/4 = 0。
选择A0做划分的信息熵增益G(S, A0)=S - E = 1 - 0 = 1.
事实上,决策树叶子节点表示已经都属于相同类别,因此信息熵一定为0。
●树2先选A1作划分,各子节点信息熵计算如下:
0,2子节点有1个正例,1个负例。
信息熵为:e1 = -(1/2 * log(1/2) + 1/2 * log(1/2)) = 1。
1,3子节点有1个正例,1个负例。
信息熵为:e2 = -(1/2 * log(1/2) + 1/2 * log(1/2)) = 1。
因此选择A1划分后的信息熵为每个子节点的信息熵所占比重的加权和:E = e1*2/4 + e2*2/4 = 1。
也就是说分了跟没分一样!
选择A1做划分的信息熵增益G(S, A1)=S - E = 1 - 1 = 0.
因此,每次划分之前,我们只需要计算出信息熵增益最大的那种划分即可。
1.4 算法要点
1.4.1、指导思想
经过决策属性的划分后,数据的无序度越来越低,也就是信息熵越来越小
1.4.2 算法实现
梳理出数据中的属性
比较按照某特定属性划分后的数据的信息熵增益,选择信息熵增益最大的那个属性作为第一划分依据,然后继续选择第二属性,以此类推
2. 决策树分类算法Python实战
2.1 案例需求
我们的任务就是训练一个决策树分类器,输入身高和体重,分类器能给出这个人是胖子还是瘦子。
所用的训练数据如下,这个数据一共有10个样本,每个样本有2个属性,分别为身高和体重,第三列为类别标签,表示“胖”或“瘦”。
该数据保存在1.txt中。
2.2 模型分析
决策树对于“是非”的二值逻辑的分枝相当自然。
而在本数据集中,身高与体重是连续值怎么办呢?
虽然麻烦一点,不过这也不是问题,只需要找到将这些连续值划分为不同区间的中间点,就转换成了二值逻辑问题。
本例决策树的任务是找到身高、体重中的一些临界值,按照大于或者小于这些临界值的逻辑
将其样本两两分类,自顶向下构建决策树。
2.3 python实现
使用python的机器学习库,实现起来相当简单和优雅
2.4 决策树的保存
一棵决策树的学习训练是非常耗费运算时间的,因此,决策树训练出来后,可进行保存,以便在预测新数据时只需要直接加载训练好的决策树即可
本案例的代码中已经决策树的结构写入了tree.dot中。
打开该文件,很容易画出决策树,还可以看到决策树的更多分类信息。
本例的tree.dot如下所示:
根据这个信息,决策树应该长的如下这个样子:。