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

先来个总结:

与线性模型相比,朴素贝叶斯(naive bayes)的训练速度更快,原因在于,它单独查看每个特征来学习参数,并从每个特征中收集简单的类别统计数据;但泛化能力稍差。

 

接下来函数中的alpha因子的作用:平滑数据

alpha越大平滑性越强,模型复杂度越低,算法的鲁棒性相对越好。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

一、离散型朴素贝叶斯分类器可用于文本文字分类,整数小数特征计数都可以使用。

       示例代码解析

import numpy as np
X=np.random.randint(5,size=(6,100))
#随机生成6个100维每个元素小于5的数组
y=np.array([1,2,3,4,5,6])
#特征值为1,2,3,4,5
from  sklearn.naive_bayes import MultinomialNB
clf=MultinomialNB()
clf.fit(X,y)
#开始训练离散型朴素贝叶斯分类器
MultinomialNB(alpha=1.0,class_prior=None,fit_prior=True)
#该行意思就是 使用先验概率并可以随数据进行调整
print(clf.predict(X[2:3]))
#输出第二行第三列样本属性的预测值

二、高斯朴素贝叶斯分类器

#Can perform online updates to model parameters via partial_fit methed
import numpy as np
X=np.array([[-1,-1],[-2,-1],[-3,-2],[1,1],[2,1],[3,2]])
Y=np.array([1,1,1,2,2,2])
from sklearn.naive_bayes import GaussianNB
clf=GaussianNB()
clf.fit(X,Y);
GaussianNB(priors=None,var_smoothing=1e-9))
print(clf_pf.predict([-0.8,-1]))

 

BernoulliNB适用于短小数据集。特征为二值向量的分类。(如果输入不是二值向量,BNB也会用二值化向量将输入转为二值)

BernoulliNB适用于离散数据,与离散型朴素贝叶斯的区别在于,后者与发生次数相关,前者专为二值特征设计。

 

示例代码如下:

import numpy as np
X=np.random.randint(2,size=(6,100))
#randint 函数随机生成6个100维的二值数据
Y=np.array([1,2,3,4,4,5])
#目标值
from sklearn.naive_bayes import BernoulliNB
#采用Bernoulli分类器
clf=BernoulliNB()
clf.fit(X,Y)
#根据X,Y训练贝叶斯分类器
BernoulliNB(alpha=1.0,binarize=0.0,class_prior=None,fit_prior=True)
#alpha平滑因子float型数据,默认为1
#binarize二值化运算(映射为布尔值)值为零时默认为已输入的二值向量
#fit_prior默认为True学习先验概率(根据以往经验分析得到的概率,在考虑一些因素之前
#对这一数量的置信程度,即可信度,的概率分布)
#class_prior类先验概率,如果被指定,先验概率不会随着数据进行调整
#平滑因子为1进行数据光滑,输入为二值向量,不采用类先验概率,默认使用先验概率并允许值随着数据进行调整。

print(clf.predict(X[2:3]))
#预测X的第二行第三列样本的特征值

最后程序输出结果:

[3]

 

程序中用到的函数

numpy.random.randint(low,high=none,size=none,dtype='1')

  • [low,high)生成的值在low和high之间,若无high的值,则生成在[0,low)之间
  • size(m*n*k)指维度
  • dtype:dtype想要输出的格式,如int64,int等

predict(X)返回的是对样本目标值的预测

predict_proba返回的是一个 n 行 k 列的数组, 预测第i行第j列样本为某个标签的概率,并且每一行的概率和为1。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小菜鸡变形记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值