贝叶斯分类算法:
贝叶斯分类是统计学的一种分类算法,它是一类利用概率统计知识进行分类的算法。在许多场合,朴素贝叶斯(Naïve Bayes,NB)分类算法可以与决策树和神经网络分类算法相媲美。
缺陷:
与其本身的设定有关,由于贝叶斯假设一个属性值对给定类的影响独立于其它属性的值,但是该假设在实际情况中经常是不成立的,因此其分类准确率可能会下降。升级版:降低独立性假设的贝叶斯分类算法,如TAN(tree augmented Bayes network)算法。
朴素贝叶斯分类的正式定义如下:
1.设 x={a1,a2,…,am}为一个待分类项,而每个 a 为 x 的一个特征属性。
2.有类别集合 C={y1,y2,…,yn}。
3.计算 P( y1|x) ,P( y2|x),…, P( yn|x)。
4.如果 P( yk|x) =max{P( y1|x),P( y2|x),…, P( yn|x)},则 x∈yk。
贝叶斯算法如下:
#贝叶斯算法实现
#建立一个类
import numpy as np
class Bayes:
def _init_(self):
self.length=-1
self.labelcount=dict()
self.vectorcount=dict()
def fit(self,dataSet:list,labels:list):
if(len(dataSet)!=len(labels)):
raise ValueError("您输入的测试数组跟类别数组长度不一致")
self.length=len(dataSet[0])
#测试数据特征值的长度
labelsnum=len(labels)
#类别所有的数量
norlabels=set(labels)
#不重复类别的数量
for item in norlabels:
thislabel=item
labelcount[thislabel]=labels.count(thislabel)/labelsnum
#当前类别占总类别的比例
for vector,label in zip(dataSet,labels):
#将两变量整合到一起
if(label not in vectorcount):
self.vectorcount[label]=[]
self.vectorcount[label].append(vector)
print("训练结束")

最低0.47元/天 解锁文章
1万+





