网站维护建设费入什么科目,政务网站无障碍建设,河北建基官网,北票市建设工程安全管理站网站前两天不知道把书放哪去了#xff0c;就停更了一下#xff0c;昨天晚上发现被我放在书包夹层里面了#xff0c;所以今天继续开始学习。
首先明确一下啊#xff0c;朴素贝叶斯是什么#xff1a;朴素贝叶斯分类器是一种有监督的统计学过滤器#xff0c;在垃圾邮件过滤、信…前两天不知道把书放哪去了就停更了一下昨天晚上发现被我放在书包夹层里面了所以今天继续开始学习。
首先明确一下啊朴素贝叶斯是什么朴素贝叶斯分类器是一种有监督的统计学过滤器在垃圾邮件过滤、信息检索等领域经常被使用到。
一、极大似然估计这个我就不讲了纯纯数理统计的问题目标就是找到一个参数p让他使得所有随机变量的联合概率最大我就直接贴上一张图吧 图1最大似然估计二、朴素贝叶斯分类
先回忆一下概率论里面贝叶斯公式是什么想不起来的话建议翻一翻浙大的那本概率论与数理统计那里面有的简单的来说就是求条件概率或者说已知道一件事情X发生的概率求X发生情况下另一个事件Y发生的概率 那么用频率代替概率在样本集合上进行估计的话就是 三、拉普拉斯平滑
如果说我们的样本集合不够大就可能没有法子去覆盖特征值的所有可能取值也就是说可能会出现这种情况 这个时候你不管怎么给其他的特征分量取值都会出现 这种情况很麻烦吧但是这种情况是可以避免的通过平滑处理典型的就是拉普拉斯平滑 是的所有可能取值的个数。
来看一下书上给出的完整的朴素贝叶斯分类器的算法
我们要输入的是:样本集合待预测样本下样本标记的所有可能值样本输入变量X的每个属性的所有可能取值;
输出很简单带预测样本x所属类别
算法如下
step1计算标记为的样本出现的概率 step2计算标记为的样本其分量的属性值为的概率 step3根据上面的估计值计算x属于所有的概率值并且喧杂概率最大的作为输出 即 其实朴素贝叶斯的本质就是极大似然估计我也不知道再写些啥书上有和的计算方法想推的自己推一推吧极大似然估计这个是考研数一的必考点我在这里强烈推荐宇哥的视频学完一身轻松。
我们看一个书上给出的利用朴素贝叶斯实现垃圾短信分类的应用emm他用的是SMS Spam Collection DataSet,you 5574条短信其中有747条垃圾短信数据集和是个纯文本每行对应一条垃圾短信第一个单词是Spam或者ham表示是不是垃圾短信这就是很简单的标签了标签和短信内容之间用制表符分隔。
其实看到这个的时候我想说好好学一学没啥坏处我的qq邮箱和163邮箱里面全是垃圾邮件每天都有烦死了快。
找了一下啊Kaggle上面是有这个数据集的其他人的博客也给出了相关的下载地址我会把这个传到我的下载哪一栏里面去有需要的可以下载。
with open(./spam.csv,r,encodinggb18030, errorsignore)as f:sms[line.split(,)for line in f ]#,encodingutf-8
y,xzip(*sms)
from sklearn.feature_extraction.text import CountVectorizer as CV
from sklearn.model_selection import train_test_split
y[labelspamfor label in y]
x_train,x_test,y_train,y_testtrain_test_split(x,y)
counterCV(token_pattern[a-zA-Z]{2,})
x_traincounter.fit_transform(x_train)
x_testcounter.transform(x_test)
# print (x_train)
# print(x_test)
from sklearn.naive_bayes import MultinomialNB as NB
modelNB()
model.fit(x_train,y_train)
train_scoremodel.score(x_train,y_train)
test_scoremodel.score(x_test,y_test)
print(train_score:,train_score)
print(test_score:,test_score)
注意这里有两个地方和书上的不一样因为我从kaggle上面下载的是.csv文件一直读不出来然后查了一下将encodingutf-8改成了encodinggb18030, errorsignore同时这个数据集合并没有和书上说的那样子标签和正文以空格隔开而是用“”隔开的所以分隔那里我用的是
line.split(,)这下才读取成功这个地方告诉我们搞之前要好好看一下数据集合不能一昧的跟着书上走因为书是先出的你是后学的先出的肯定会和你后面学习要用到的东西有出入因地制宜合理发展产品迭代才是硬道理此处连续三个/doge
好了来看看分类效果为啥把两个print给注释了没错误啊绝对保真就是输出太多了我嫌烦才给注释了。 图2朴素贝叶斯分类结果可以看到训练结果是0.989测试结果是0.979效果还是可以滴。