贝叶斯

python自己实现朴素贝叶斯分类模型

[亡魂溺海] 提交于 2019-11-26 10:00:02
import numpy as np x = [['happy','new','year','every','day','sunny',], ['sunny','happy','slow','great','cool'], ['sad','bad','no'], ['sad','hard','worry'], ['happy','love','warm','dream','sweat'], ['hard','cold','slow']] y = [0,0,1,1,0,1] def vocabVec(x,y): vocabSet = set() for i in x: vocabSet = vocabSet|set(i) vocabList = list(vocabSet) a = np.zeros((len(x),len(vocabList))) for index,i in enumerate(x): for j in i: a[index][vocabList.index(j)]+=1 X = np.array(x) Y = np.array(y) P0 = a[Y == 0] p0Sum = np.sum(P0,axis=0)/np.sum(P0) p0class = len(Y[Y == 0])/float(len(Y)) P1 = a[Y == 1] p1Sum = np

贝叶斯网络

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-25 23:53:19
参考链接 贝叶斯网络是什么?       一个模型,该模型描绘各个状态之间是如何通过概率连接起来的。       上图中,天气状态分为:sunny,cloudy,rainy; 洒水车状态分为:喷洒,不喷洒;草坪状态分为:湿润,干燥       如果通过联合概率来表示上述三个事件中,一个事件发生的情况下,另一个事件发生的概率,则需要3*2*2=12种可能,显然不划算。因为它把一些不必要的情况也考虑了。所以,需要用条件概率来表示。     贝叶斯网络的一个重要特点:不可以有圈。下图就不是贝叶斯网络          贝叶斯网络为什么有用? 仅仅存储父子相关的概率,节省存储空间和计算时间 仅仅只用很少的数据开始,就可以。后续数据增加的时候,也较为方便 举例说明为何说贝叶斯网络适应性强: 数据 图标 30% of the US population smokes. Lung cancer can be found in about 70 people per 100,000. TB occurs in about 10 people per 100,000. Bronchitis can be found in about 800 people per 100,000. Dyspnea can be found in about 10% of people, but most of

Sklearn实现朴素贝叶斯

蓝咒 提交于 2019-11-25 19:17:54
#------------------------------Sklearn 实现朴素贝叶斯----------------------- # 在scikit-learn中,一共有3个朴素贝叶斯的分类算法类。 # 分别是GaussianNB,MultinomialNB和BernoulliNB。 # 其中GaussianNB就是先验为高斯分布的朴素贝叶斯, # MultinomialNB就是先验为多项式分布的朴素贝叶斯, # 而BernoulliNB就是先验为伯努利分布的朴素贝叶斯。 # # 这三个类适用的分类场景各不相同,一般来说,如果样本特征的分布大部分是连续值,使用GaussianNB会比较好。 # 如果如果样本特征的分大部分是多元离散值,使用MultinomialNB比较合适。 # 而如果样本特征是二元离散值或者很稀疏的多元离散值,应该使用BernoulliNB。 #----------------------------------案例一------------------------------------ #GaussianNB_高斯朴素贝叶斯 import numpy as np from sklearn.naive_bayes import GaussianNB from sklearn.naive_bayes import MultinomialNB from