首页 > 其他分享 >朴素贝叶斯、决策树及随机森林

朴素贝叶斯、决策树及随机森林

时间:2024-08-23 19:26:23浏览次数:13  
标签:iris 剪枝 贝叶斯 train test 节点 朴素 决策树

朴素贝叶斯

相关理论

        在机器学习算法中,大多数的算法都是判别方法,如决策树、KNN、逻辑回归、支持向量机等。而朴素贝叶斯是生成方法,直接找出输出特征Y和特征X的联合分布P(Y\mid X),用P(Y\mid X)=P(X,Y)/P(X)得出。

                        如果X和Y条件独立,P(X,Y)=P(X)P(Y)

                条件概率公式:P(Y\mid X)=P(X,Y)/P(X),P(X\mid Y)=P(X,Y)/P(Y)

                P(Y\mid X)=P(X\mid Y)P(Y)/P(X)

                        全概率公式:P(X)=\sum_{k }^{}P(X\mid Y=Y_{k})P(Y_{k}),其中\sum_{k}^{}P(Y^{_{k}})=1

               贝叶斯公式为:P(Y_{k}\mid X)=P(X,X_{k})/p(X)=[P(X\mid Y=Y_{k})P(Y_{k})]/[\sum_{k}^{}P(X\mid Y=Y_{k})P(Y_{k})]

先验概率+数据=后验概率

也就是说我们在实际问题中要得到后验概率,可以通过先验概率和数据综合得。

sklearn API

sklearn . naive_bayes . MultinomialNB () estimator . fit ( x_train , y_train ) y_predict = estimator . predict ( x_test )

示例

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB
#获取数据
iris=load_iris()
#划分数据集
x_train,x_test,y_train,y_test=train_test_split(iris.data,iris.target)

estimator=MultinomialNB()
estimator.fit(x_train,y_train)


score=estimator.score(x_test,y_test)
print("准确率:\n",score)

index=estimator.predict([[1,1,2,2]])
print("预测:\n",index,iris.target_names,iris.target_names[index])

决策树

基本知识

决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。

组成

□——决策点,是对几种可能方案的选择,即最后选择的最佳方案。如果决策属于多级决策,则决策树的中间可以有多个决策点,以决策树根部的决策点为最终决策方案。

○——状态节点,代表备选方案的经济效果(期望值),通过各状态节点的经济效果的对比,按照一定的决策标准就可以选出最佳方案。由状态节点引出的分支称为概率枝,概率枝的数目表示可能出现的自然状态数目每个分枝上要注明该状态出现的概率。

△——结果节点,将每个方案在各种自然状态下取得的损益值标注于结果节点的右端。

画法

机器学习中,决策树是一个预测模型;他代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每个叶结点则对应从根节点到该叶节点所经历的路径所表示的对象的值。决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输出。数据挖掘中决策树是一种经常要用到的技术,可以用于分析数据,同样也可以用来作预测。

一个决策树包含三种类型的节点:

  1. 决策节点:通常用矩形框来表示
  2. 机会节点:通常用圆圈来表示
  3. 终结点:通常用三角形来表示

决策树如果依靠数学的计算方法可以取得更加理想的效果。 数据库已如下所示:

(x, y) = (x1, x2, x3…, xk, y)

相关的变量 Y 表示我们尝试去理解,分类或者更一般化的结果。 其他的变量x1, x2, x3 等则是帮助我们达到目的的变量。

决策树的剪枝

剪枝是决策树停止分支的方法之一,剪枝有分预先剪枝和后剪枝两种。预先剪枝是在树的生长过程中设定一个指标,当达到该指标时就停止生长,这样做容易产生“视界局限”,就是一旦停止分支,使得节点N成为叶节点,就断绝了其后继节点进行“好”的分支操作的任何可能性。不严格的说这些已停止的分支会误导学习算法,导致产生的树不纯度降差最大的地方过分靠近根节点。后剪枝中树首先要充分生长,直到叶节点都有最小的不纯度值为止,因而可以克服“视界局限”。然后对所有相邻的成对叶节点考虑是否消去它们,如果消去能引起令人满意的不纯度增长,那么执行消去,并令它们的公共父节点成为新的叶节点。这种“合并”叶节点的做法和节点分支的过程恰好相反,经过剪枝后叶节点常常会分布在很宽的层次上,树也变得非平衡。后剪枝技术的优点是克服了“视界局限”效应,而且无需保留部分样本用于交叉验证,所以可以充分利用全部训练集的信息。但后剪枝的计算量代价比预剪枝方法大得多,特别是在大样本集中,不过对于小样本的情况,后剪枝方法还是优于预剪枝方法的。

优点

决策树易于理解和实现,人们在在学习过程中不需要使用者了解很多的背景知识,这同时是它的能够直接体现数据的特点,只要通过解释后都有能力去理解决策树所表达的意义。[1]

对于决策树,数据的准备往往是简单或者是不必要的,而且能够同时处理数据型和常规型属性,在相对短的时间内能够对大型数据源做出可行且效果良好的结果。

易于通过静态测试来对模型进行评测,可以测定模型可信度;如果给定一个观察的模型,那么根据所产生的决策树很容易推出相应的逻辑表达式。

缺点

1)对连续性的字段比较难预测。

2)对有时间顺序的数据,需要很多预处理的工作。

3)当类别太多时,错误可能就会增加的比较快。

4)一般的算法分类的时候,只是根据一个字段来分类。

基于信息增益决策树的建立

信息熵 信息熵描述的是不确定性。信息熵越大,不确定性越大。信息熵的值越小,则 D 的纯度越高。 信息增益 信息增益是一个统计量,用来描述一个属性区分数据样本的能力。信息增益越大,那么决策树就会越简 洁。这里信息增益的程度用信息熵的变化程度来衡量 信息增益公式:

信息增益决策树建立步骤

第一步 , 计算根节点的信息熵 第二步 , 计算属性的信息增益 第三步 , 划分属性

API

class sklearn.tree.DecisionTreeClassifier(....) 参数: criterion "gini" "entropy” 默认为="gini" 当criterion取值为"gini"时采用 基尼不纯度(Gini impurity)算法构造决策树, 当criterion取值为"entropy”时采用信息增益( information gain)算法构造决策树. max_depth int, 默认为=None 树的最大深度 # 可视化决策树 function sklearn.tree.export_graphviz(estimator, out_file="iris_tree.dot", feature_names=iris.feature_names) 参数: estimator决策树预估器 out_file生成的文档 feature_names节点特征属性名 功能: 把生成的文档打开,复制出内容粘贴到"http://webgraphviz.com/"中,点击"generate Graph"会生成一个树型的决策树图

示例

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.tree import DecisionTreeClassifier, export_graphviz

iris=load_iris()
x_train,x_test,y_train,y_test=train_test_split(iris.data,iris.target,random_state=22)
transfer=StandardScaler()
x_train=transfer.fit_transform(x_train)
x_test=transfer.transform(x_test)

estimator=DecisionTreeClassifier(criterion="entropy")
estimator.fit(x_train,y_train)
score=estimator.score(x_test,y_test)
print("准确率为:",score)

index=estimator.predict([[1,2,3,1]])
print("预测:",index,iris.target_names,iris.target_names[index])

export_graphviz(estimator,out_file="iris_tree.dot",feature_names=iris.feature_names)

运行结果:

随机森林

基础知识

随机 : 特征随机,训练集随机         样本:                 对于一个总体训练集T, T 中共有 N 个样本,每次有放回地随机选择 n 个样本。用这 n 个样         本来训练一个决策树。         特征:                 假设训练集的特征个数为d,每次仅选择 k(k<d) 个来构建决策树。 森林: 多个决策树分类器构成的分类器 , 因为随机,所以可以生成多个决策树 处理具有高维特征的输入样本,而且不需要降维 使用平均或者投票来提高预测精度和控制过拟合

API

class sklearn.ensemble.RandomForestClassifier 参数: n_estimators int, default=100 森林中树木的数量。 ( 决策树个数 ) criterion {“gini”, “entropy”}, default=”gini” 决策树属性划分算法选择         当criterion 取值为 “gini” 时采用 基尼不纯度( Gini impurity )算法构造决策树,         当criterion 取值为 “entropy” 时采用信息增益( information gain )算法构造决策树 . ax_depth int, default=None 树的最大深度。

标签:iris,剪枝,贝叶斯,train,test,节点,朴素,决策树
From: https://blog.csdn.net/m0_68153457/article/details/141462965

相关文章

  • Python个人收入影响因素模型构建:回归、决策树、梯度提升、岭回归
    全文链接:https://tecdat.cn/?p=37423原文出处:拓端数据部落公众号“你的命运早在出生那一刻起便被决定了。”这样无力的话语,无数次在年轻人的脑海中回响,尤其是在那些因地域差异而面临教育资源匮乏的年轻人中更为普遍。在中国,这种现象尤为明显:没有生在大城市的他们,从小便需面对......
  • 用Python实现9大回归算法详解——09. 决策树回归算法
    1.决策树回归的基本概念决策树回归(DecisionTreeRegression)是一种树状结构的回归模型,通过对数据集进行递归分割,将数据分成更小的子集,并在每个子集上进行简单的线性回归。决策树的核心思想是通过选择特征及其阈值来最大化每次分裂后的目标函数增益,从而找到使误差最小化的模型......
  • 【学习笔记】 陈强-机器学习-Python-Ch11 决策树(Decision Tree)
    系列文章目录监督学习:参数方法【学习笔记】陈强-机器学习-Python-Ch4线性回归【学习笔记】陈强-机器学习-Python-Ch5逻辑回归【课后题练习】陈强-机器学习-Python-Ch5逻辑回归(SAheart.csv)【学习笔记】陈强-机器学习-Python-Ch6多项逻辑回归【学习笔记及课后......
  • Python个人收入影响因素模型构建:回归、决策树、梯度提升、岭回归
    全文链接:https://tecdat.cn/?p=37423原文出处:拓端数据部落公众号“你的命运早在出生那一刻起便被决定了。”这样无力的话语,无数次在年轻人的脑海中回响,尤其是在那些因地域差异而面临教育资源匮乏的年轻人中更为普遍。在中国,这种现象尤为明显:没有生在大城市的他们,从小便需面对教育......
  • 时序预测|基于贝叶斯BO-卷积-双向门控单元-注意力机制的单变量时间序列预测模型BO-CNN
    时序预测|基于贝叶斯BO-卷积-双向门控单元-注意力机制的单变量时间序列预测模型BO-CNN-BiGRU-Attention文章目录前言时序预测|基于贝叶斯BO-卷积-双向门控单元-注意力机制的单变量时间序列预测模型BO-CNN-BiGRU-Attention一、BO-CNN-BiGRU-Attention模型1.贝叶斯优......
  • 使用贝叶斯优化CDENCLUE聚类算法参数
    目录1.贝叶斯优化的基本原理原理和实现步骤:2.轮廓系数的原理公式:3.贝叶斯优化的实现流程(伪代码)1.贝叶斯优化的基本原理贝叶斯优化是一种基于概率模型的优化方法,主要用于优化计算代价高昂的黑盒函数。它结合了先验知识和观察到的数据来更新后验知识,并用一个易......
  • Kolmogorov-Smirnov 检验 + k 样本 Anderson-Darling 检验 + 贝叶斯估计 + 期望方差
    KS检验是基于Kolmogorovdistribution,指的是\[K=\sup_{t\in[0,1]}\left\lvertB(t)\right\rvert\]式中\(B(t)\)是布朗桥。\(K\)的累积分布函数是\[\Pr(K\lex)=1-2\sum_{k=1}^\infty(-1)^{k-1}\mathrme^{-2k^2x^2}=\frac{\sqrt{2\pi}}x\sum_{k=1}^\infty\mathrme^......
  • 【机器学习】简析决策树
    决策树的直观理解决策树是一种常用的机器学习算法,用于分类和回归任务。为了让你理解决策树的原理,我将用一个形象的类比来解释。想象一下,你在参加一个问答游戏,目的是猜出某个人正在想的一种水果。这个人会依次回答你提出的各种问题,直到你猜到正确的水果。比如,你可能会问:......
  • 南瓜书公式详解------第七章(贝叶斯)
    式7.5R(c∣x)=......
  • 【机器学习算法】梯度提升决策树
    梯度提升决策树(GradientBoostingDecisionTrees,GBDT)是一种集成学习方法,它通过结合多个弱学习器(通常是决策树)来构建一个强大的预测模型。GBDT是目前最流行和最有效的机器学习算法之一,特别适用于回归和分类任务。它在许多实际应用中表现出色,包括金融风险控制、搜索排名、......