机器学习——朴素贝叶斯分类器(代码片段)

somedayli somedayli     2022-12-27     217

关键词:

贝叶斯分类是一类分类算法的总称,这类算法均已贝叶斯定理为基础,因此统称为贝叶斯分类。在贝叶斯分类器中,常用朴素贝叶斯,就类似于看见黑人,大多会认为来自非洲。

事件A在事件B(发生)的条件下的概率,与事件B在事件A(发生)的条件下的概率是不一样的,但他们有确定的关系,贝叶斯定理就是对在这种关系的陈述。

优点:

简单、高效、健壮。能应用到大型数据库中,方法简单且分类准确率高,速度快。

缺点:

相关属性不独立,会影响贝叶斯分类准确率。

改进方法:

降低独立性假设的算法, 例如,TAN(Tree Augmented Bayes Network)算法、贝叶斯网络分类器(Bayes Network Classifier,BNC)。

朴素贝叶斯分类步骤:

(1)设为一个待分类项,a为x的一个特征属性。

(2)有类别集合

(3)计算;

(4)如果,则。

总体来说,大致分为三个阶段:

 技术分享图片

实例介绍:

运用朴素贝叶斯算法根据客户的16个属性,为一家银行建一个分类器,判断客户是否愿意购买理财产品:

技术分享图片

MATLAB实现代码:

 1 %% ————————————2.朴素贝叶斯分类器——————————————%%
 2 load bank.mat;
 3 names = bank.Properties.VariableNames;%使用数据文件,记录自变量和因变量的属性名
 4 category = varfun(@iscellstr,bank,Output,uniform); %输出格式为数值格式。为字符串的返回结果为1,为数字的返回结果为0
 5 for i = find(category)
 6     bank.(namesi) = categorical(bank.(namesi));
 7     %将bank中的属性创建分类数组。bank.(namesi) 的类别是bank.(namesi)经过分类后的唯一值且经过排序
 8 end
 9 catPred = category(1:end-1);
10 dist = repmat(normal,1,width(bank)-1);
11 dist(catPred) = mvmn;
12 %
13 X = table2array(varfun(@double,bank(:,1:end-1)));%预测变量
14 Y = bank.y;
15 disp(数据中YES&No的统计结果);
16 tabulate(Y) %求重复数字的个数使用tabulate,占比率
17 Xnum = [X(:,~catPred) dummyvar(X(:,catPred))];
18 Ynum = double(Y)-1;
19 
20 %%%设置交叉验证方式
21 cv = cvpartition(height(bank),holdout,0.40);
22 Xtrain = X(training(cv),:);
23 Ytrain = Y(training(cv),:);
24 Xtest = X(test(cv),:);
25 Ytest = Y(test(cv),:);
26 XtestNum = Xnum(test(cv),:);
27 YtestNum = Ynum(test(cv),:);
28 %训练分类器
29 Nb = NaiveBayes.fit(Xtrain,Ytrain,Distribution,dist);
30 %进行预测
31 Y_Nb = Nb.predict(Xtest);
32 Yscore_Nb = Nb.posterior(Xtest);
33 Yscore_Nb = Yscore_Nb(:,2);
34 %计算混淆矩阵
35 disp(贝叶斯分类结果);
36 C_nb = confusionmat(Ytest,Y_Nb)

 

机器学习系列-朴素贝叶斯分类器

贝叶斯分类器什么是贝叶斯分类器贝叶斯分类器是一类分类器的总称,这些分类器均以贝叶斯定理为基础,故统称为贝叶斯分类器。这些分类器中最简单的是朴素贝叶斯分类器,它几乎完全按照贝叶斯定理进行分类,因此我们从... 查看详情

机器学习九大算法---朴素贝叶斯分类器

机器学习九大算法---朴素贝叶斯分类器 搞懂朴素贝叶斯分类算贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类... 查看详情

机器学习sklearn监督学习分类算法朴素贝叶斯naivebayesianmodel(代码片段)

importnumpyasnpfromsklearn.naive_bayesimportGaussianNBX=np.array([[-1,-1],[-2,-1],[-3,-2],[1,1],[2,1],[3,2]])Y=np.array([1,1,1,2,2,2])#使用默认参数,创建一个高斯朴素贝叶斯分类器,并将该分类器赋给变量clfclf= 查看详情

机器学习sklearn监督学习分类算法朴素贝叶斯naivebayesianmodel(代码片段)

importnumpyasnpfromsklearn.naive_bayesimportGaussianNBX=np.array([[-1,-1],[-2,-1],[-3,-2],[1,1],[2,1],[3,2]])Y=np.array([1,1,1,2,2,2])#使用默认参数,创建一个高斯朴素贝叶斯分类器,并将该分类器赋给变量clfclf= 查看详情

机器学习——朴素贝叶斯算法

机器学习——朴素贝叶斯算法贝叶斯定理正向概率和逆向概率条件概率与全概率贝叶斯公式推导极大似然估计朴素贝叶斯分类器朴素可能性函数的作用拉普拉斯修正防溢出策略样例解释代码——使用拉普拉斯进行垃圾邮件分类构... 查看详情

机器学习朴素贝叶斯分类器返回语句简介

】机器学习朴素贝叶斯分类器返回语句简介【英文标题】:Introtomachinelearningnaivebayesclassifierreturnstatement【发布时间】:2021-01-1302:15:40【问题描述】:我尝试从Udacity的机器学习入门课程中学习机器学习。第2课-朴素贝叶斯测验19:... 查看详情

机器学习:朴素贝叶斯分类器实现二分类(伯努利型)代码+项目实战(代码片段)

一、朴素贝叶斯分类器的构建importnumpyasnpclassBernoulliNavieBayes:def__init__(self,alpha=1.):#平滑系数,默认为1(拉普拉斯平滑).self.alpha=alphadef_class_prior_proba_log(self,y,classes):‘‘‘计算所有类别先验概率P(y=c_k)‘‘‘#统计各类别样本数量c_count... 查看详情

《机器学习实战》程序清单4-2朴素贝叶斯分类器训练函数(代码片段)

 此文旨在把trainNB0这个函数详细讲清楚。def trainNB0(trainMatrix,trainCategory):    numTrainDocs = len(trainMatrix)    numWords = len(trainMatrix[ 查看详情

通俗机器学习—朴素贝叶斯(代码片段)

引言机器学习分类中的k近邻法和决策树师确定的分类算法,数据实例最终会被明确划分到某个分类中,本节我们讨论的分类算法将不能完全确定数据实例应该划分到某个分类,或者智能给出数据实例属于给定分类的概率 一... 查看详情

机器学习sklearn监督学习分类算法朴素贝叶斯naivebayesianmodel(代码片段)

importnumpyasnpfromsklearn.naive_bayesimportGaussianNBX=np.array([[-1,-1],[-2,-1],[-3,-2],[1,1],[2,1],[3,2]])Y=np.array([1,1,1,2,2,2])#使用默认参数,创建一个高斯朴素贝叶斯分类器,并将该分类器赋给变量clfclf=GaussianNB(priors=None)clf.fit(X,Y)p... 查看详情

机器学习朴素贝叶斯应用实例(代码片段)

朴素贝叶斯概述贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。本章首先介绍贝叶斯分类算法的基础——贝叶斯定理。最后,我们通过实例来讨论贝叶斯分类的中最简单的一种:... 查看详情

机器学习之路--朴素贝叶斯(代码片段)

 一,引言  前两章的KNN分类算法和决策树分类算法最终都是预测出实例的确定的分类结果,但是,有时候分类器会产生错误结果;本章要学的朴素贝叶斯分类算法则是给出一个最优的猜测结果,同时给出猜测的概率估计值... 查看详情

机器学习系列——朴素贝叶斯分类器

贝叶斯定理:    其中: 表示事件B已经发生的前提下,事件A发生的概率,叫做事件B发生下事件A的条件概率。其基本求解公式为:。  查看详情

机器学习基于概率论的分类方法:朴素贝叶斯(代码片段)

分类器可能产生错误分类,要求分类器给出一个最优的类别猜测结果并给出这个猜测的概率估计值。朴素贝叶斯的特点:优点:在数据较少的情况下依然有效,可以处理多类别问题;缺点:对于输入数据的准备方式较为敏感;适... 查看详情

Weka机器学习:如何解释朴素贝叶斯分类器?

】Weka机器学习:如何解释朴素贝叶斯分类器?【英文标题】:Wekamachinelearning:howtointerpreteNaiveBayesclassifier?【发布时间】:2012-04-2817:12:48【问题描述】:我正在使用资源管理器功能进行分类。我的.arff数据文件有10个数字和二进制... 查看详情

机器学习11-分类与监督学习,朴素贝叶斯分类算法(代码片段)

1.理解分类与监督学习、聚类与无监督学习。简述分类与聚类的联系与区别。简述什么是监督学习与无监督学习。分类与聚类的区别:是否有已知分类的条件。分类没有,聚类有。监督学习:已知某些类别的情况下,即具有事先... 查看详情

机器学习算法--贝叶斯分类器

该文章参考周志华老师著的《机器学习》一书 1. 朴素贝叶斯分类器朴素贝叶斯分类器采用了“属性条件独立性假设”:对已知类别,假设所有属性相互独立,即假设每个属性独立的对分类结果发生影响。d为属性数目,xi... 查看详情

机器学习---朴素贝叶斯分类器(machinelearningnaivebayesclassifier)

...ils/60140664。在这里,我按自己的理解再整理一遍。 在机器学习中,我们有时需要解决分类问题。也就是说,给定一个样本的特征值(feature1,feature2,...feauren),我们想知道该 查看详情