朴素贝叶斯分类器(Python实现+详细源码原理)
1、贝叶斯公式的本质: u由因到果,由果推因/u
10余年的建湖网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都营销网站建设的优势是能够根据用户设备显示端的尺寸不同,自动调整建湖建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“建湖网站设计”,“建湖网站推广”以来,每个客户项目都认真落实执行。
2、贝叶斯公式:
[图片上传中...(wps6.png-5fd624-1618488341725-0)]
1、朴素贝叶斯公式
x1,x2,...xn为特征集合,y为分类结果
朴素贝叶斯假设各个特征之间相互独立
分母相同情况下,我们只要保证分子最大
训练数据集
long,not_long,sweet,not_sweet,yellow,not_yellow,species
400,100,350,150,450,50,banana
0,300,150,150,300,0,orange
100,100,150,50,50,150,other_fruit
测试数据集
long,sweet,yellow
not_long,not_sweet,not_yellow
not_long,sweet,not_yellow
not_long,sweet,yellow
not_long,sweet,yellow
not_long,not_sweet,not_yellow
long,not_sweet,not_yellow
long,not_sweet,not_yellow
long,not_sweet,not_yellow
long,not_sweet,not_yellow
long,not_sweet,yellow
not_long,not_sweet,yellow
not_long,not_sweet,yellow
long,not_sweet,not_yellow
not_long,not_sweet,yellow
结果
特征值:[not_long, not_sweet, not_yellow]
预测结果:{'banana': 0.003, 'orange': 0.0, 'other_fruit': 0.018750000000000003}
水果类别:other_fruit
特征值:[not_long, sweet, not_yellow]
预测结果:{'banana': 0.006999999999999999, 'orange': 0.0, 'other_fruit': 0.05625000000000001}
水果类别:other_fruit
特征值:[not_long, sweet, yellow]
预测结果:{'banana': 0.063, 'orange': 0.15, 'other_fruit': 0.018750000000000003}
水果类别:orange
特征值:[not_long, sweet, yellow]
预测结果:{'banana': 0.063, 'orange': 0.15, 'other_fruit': 0.018750000000000003}
水果类别:orange
特征值:[not_long, not_sweet, not_yellow]
预测结果:{'banana': 0.003, 'orange': 0.0, 'other_fruit': 0.018750000000000003}
水果类别:other_fruit
特征值:[long, not_sweet, not_yellow]
预测结果:{'banana': 0.012, 'orange': 0.0, 'other_fruit': 0.018750000000000003}
水果类别:other_fruit
特征值:[long, not_sweet, not_yellow]
预测结果:{'banana': 0.012, 'orange': 0.0, 'other_fruit': 0.018750000000000003}
水果类别:other_fruit
特征值:[long, not_sweet, not_yellow]
预测结果:{'banana': 0.012, 'orange': 0.0, 'other_fruit': 0.018750000000000003}
水果类别:other_fruit
特征值:[long, not_sweet, not_yellow]
预测结果:{'banana': 0.012, 'orange': 0.0, 'other_fruit': 0.018750000000000003}
水果类别:other_fruit
特征值:[long, not_sweet, yellow]
预测结果:{'banana': 0.108, 'orange': 0.0, 'other_fruit': 0.00625}
水果类别:banana
特征值:[not_long, not_sweet, yellow]
预测结果:{'banana': 0.027, 'orange': 0.15, 'other_fruit': 0.00625}
水果类别:orange
特征值:[not_long, not_sweet, yellow]
预测结果:{'banana': 0.027, 'orange': 0.15, 'other_fruit': 0.00625}
水果类别:orange
特征值:[long, not_sweet, not_yellow]
预测结果:{'banana': 0.012, 'orange': 0.0, 'other_fruit': 0.018750000000000003}
水果类别:other_fruit
特征值:[not_long, not_sweet, yellow]
预测结果:{'banana': 0.027, 'orange': 0.15, 'other_fruit': 0.00625}
水果类别:orange
python函数与方法的区别总结
1、函数的分类:
内置函数:python内嵌的一些函数。
匿名函数:一行代码实现一个函数功能。
递归函数
自定义函数:根据自己的需求,来进行定义函数。
2、方法的分类:
普通方法:直接用self调用的方法。
私有方法:__函数名,只能在类中被调用的方法。
属性方法:@property,将方法伪装成为属性,让代码看起来更合理。
特殊方法(双下划线方法):以__init__为例,是用来封装实例化对象的属性,只要是实例化对象就一定会执行__init方法,如果对象子类中没有则会寻找父类(超类),如果父类(超类)也没有,则直接继承object(python 3.x)类,执行类中的__init__方法。类方法:通过类名的调用去操作公共模板中的属性和方法。
静态方法:不用传入类空间、对象的方法, 作用是保证代码的一致性,规范性,可以完全独立类外的一个方法,但是为了代码的一致性统一的放到某个模块(py文件)中。
其次,从作用域的角度来分析:
(1)函数作用域:从函数调用开始至函数执行完成,返回给调用者后,在执行过程中开辟的空间会自动释放,也就是说函数执行完成后,函数体内部通过赋值等方式修改变量的值不会保留,会随着返回给调用者后,开辟的空间会自动释放。
(2)方法作用域:通过实例化的对象进行方法的调用,调用后开辟的空间不会释放,也就是说调用方法中对变量的修改值会一直保留。
最后,调用的方式不同。
(1)函数:通过“函数名()”的方式进行调用。
(2)方法:通过“对象.方法名”的方式进行调用。
xgb用python写的时候基分类器可以换别的么
可以呀,有很多种的
from sklearn import ensemble
集成分类器(ensemble):
1.bagging(ensemble.bagging.BaggingClassifier)
对随机选取的子样本集分别建立基本分类器,然后投票决定最终的分类结果
2.RandomForest(ensemble.RandomForestClassifier)
对随机选取的子样本集分别建立m个CART(Classifier and Regression Tree),然后投票决定最终的分类结果
Random在此处的意义:
1)Bootstrap 中的随机选择子样本集
2)Random subspace 的算法从属性中随机选择k个属性,每个树节点分裂时从这随机的k个属性中,选择最优的
3.Boosting(ensemble.weight_boosting)
在选择分类超平面时给样本加了一个权值,使得loss function尽量考虑那些分错类的样本。(i.e.分错类的样本weight 大)
-boosting 重采样的不是样本,而是样本的分布。最后的分类结果是几个弱分类器的线性加权和。注意这几个弱分类器都是一种base classifier类别。
-与bagging的区别:bagging 的训练集是随机的,各训练集是独立的;而boosting训练集的选择不是独立的,每次选择的训练集都依赖于上一次学习的结果;
bagging的每个预测函数(即弱假设)没有权重,而Boosting根据每一次训练的训练误差得到该次预测函数的权重;
bagging的各个预测函数可以并行生成,而boosting的只能顺序生成。对于神经网络这样极为耗时的学习方法,Bagging可通过并行训练节省大量的时间开销。
-与bagging的共同点:都可以通过使用for循环给estimator赋不同的分类器类型,以实现集成多种分类器,而不是单一的某一种(比如决策树)。
代表算法 Adaboost 和 Realboost。总的来说,Adaboost 简单好用,Realboost 准确
4.Stacking
在stacking(堆叠)方法中,每个单独分类器的输出会作为更高层分类器的输入,更高层分类器可以判断如何更好地合并这些来自低层的输出。
网站标题:python分类器函数 python分类算法
本文URL:http://scpingwu.com/article/dooddsg.html