一、算法类型
有监督的分类算法
二、算法原理
MultinomialNB算法,则:
A是类别,B是特征
p(类别i/特征)=p(类别i) * p(特征/类别i) / Σ( p(特征/类别i) * p(类别i) )
p(特征/类别i)= ( p(特征1/类别i) * p(特征2/类别i) * … * p(特征n/类别i) ),注意:特征间相互独立,累积
三、算法特点
- MultinomialNB
特点:特征服从多项式概率分布(类似抛骰子)
scikit-learn中mnb分类器可接受连续型特征,特征取值不能为负数。但一般输入是分类特征。 - GaussianNB
特点:特征服从正态分布
如果特征不服从正态分布,则要先处理数据使其转化为正态分布 - BernoulliNB
特点:特征服从0-1分布(类似抛硬币)
四、手写GaussianNB分类器代码
# 切分训练集和数据集
def randsplit(dataset,test_size=0.2):
'''
函数功能:随机切分训练集和测试集
参数说明:
dataset:输入的数据集
test_size:训练集占比
返回:切分好的训练集和测试集
'''
N,M=dataset.shape
ix=list(range(N))
random.shuffle(ix)
s=int(N * test_size)
testset=dataset.iloc[ix[0:s],:]
trainset=dataset.iloc