700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 朴素贝叶斯基础【机器学习算法一朴素贝叶斯1】

朴素贝叶斯基础【机器学习算法一朴素贝叶斯1】

时间:2022-05-13 20:11:21

相关推荐

朴素贝叶斯基础【机器学习算法一朴素贝叶斯1】

基础知识回顾

(上述内容引自李航《统计学习方法》)

过去的7天当中,有3天下雨,4天没有下雨。用0代表灭有下雨,而1代表下雨,我们可以用一个数组来表示:

y=[0,1,1,0,1,0,0]

而在这7天当中,还有另外一些信息,包括刮北风,闷热,多云,以及天气预报给出的信息,如下表:

用0代表否,1代表是,可得到如下数组。

[[0, 1, 0, 1],

[1, 1, 1, 0],

[0, 1, 1, 0],

[0, 0, 0, 1],

[0, 1, 1, 0],

[0, 1, 0, 1],

[1, 0, 0, 1]]

知识插曲(懂的可略过此部分)

对于一维数组或者列表,unique函数去除其中重复的元素,并按元素由大到小返回一个新的无重复元素的元组或者列表。参看如下代码,可知sum(axis=0)sum(axis=1)用法不同,sum(axis=0)用于计算数组中各元素对应项之和,计算完之后去掉最外层[];sum(axis=1)用于计算数组中各元素内部和,去掉内层[]保留最外层[]。

朴素贝叶斯实例

运行如下代码。

import numpy as npX=np.array([[0, 1, 0, 1],[1, 1, 1, 0],[0, 1, 1, 0],[0, 0, 0, 1],[0, 1, 1, 0],[0, 1, 0, 1],[1, 0, 0, 1]])y=np.array([0,1,1,0,1,0,0])counts={}for label in np.unique(y):counts[label]=X[y==label].sum(axis=0)print("feature counts:\n{}".format(counts))

下面解释一下这个结果的意思,当y=0时,也就在没有下雨的4天当中,有1天刮了北风,有2天比较闷热,而没有出现多云的情况,但这4天天气预报全部播放有雨。同时,在y=1时,也就是在下雨的3天当中,有1天刮了北风,3天全都比较闷热,且3天全部出现了多云的现象,有意思的是,这3天的天气预报都没有播报有雨。

那么对于朴素贝叶斯来说,它会根据上述的计算来进行推理。它会认为,如果某一天天气预报没有播报有雨,但出现了多云的情况,它会倾向于把这一天放到"下雨"这个分类中。

#导入贝努力贝叶斯from sklearn.naive_bayes import BernoulliNBclf=BernoulliNB()clf.fit(X,y)#预测新的一天[无北风,不闷热,多云,预报没说有雨]Next_Day = [[0, 0, 1, 0]]pre=clf.predict(Next_Day)if pre == [1]:print("要下雨啦,快收衣服啊!")else:print("放心,又是一个艳阳天")

朴素贝叶斯分类器把这一天放到会下雨的分类中。

#导入贝努力贝叶斯from sklearn.naive_bayes import BernoulliNBclf=BernoulliNB()clf.fit(X,y)#预测新的一天[北风,闷热,不是多云,预报说有雨]Next_Day = [[1, 1, 0, 1]]pre=clf.predict(Next_Day)if pre == [1]:print("要下雨啦,快收衣服啊!")else:print("放心,又是一个艳阳天")

朴素贝叶斯分类器把这一天放到不会下雨的分类中。

使用如下语句测试预测准确率。

print(clf.predict_proba(Next_Day))

第一天[无北风,不闷热,多云,预报没说有雨],不下雨的概率和下雨的概率如下。

第二天[北风,闷热,不是多云,预报说有雨],不下雨的概率和下雨的概率如下。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。