入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删。
目录
先验概率:根据以往经验和分析得到的概率;
后验概率:事情已经发生,要求这件事情发生的原因是由某个因素引起的可能性的大小(即根据观察到的样本修正之后的概率值)。
用途:为了解决“逆概率”问题,它可以根据过去的数据来预测出概率,在有限的信息下,预测概率。

P(B):先验概率,即在不知道A事件的前提下,我们对B事件概率的一个主观判断。
P(A|B)/P(A):可能性函数,即调整因子,即新信息A带来的调整,使得其与先验概率相乘后得到的概率更接近真实概率。
比如说,我们现在有个特征,想知道出现这种特征的对象是这种类别的概率,即:

首先假定数据具有某种确定的概率分布(所有的采样都是独立同分布的),但是其参数未知,然后基于训练样本对该概率分布的参数进行估计,得到最合适的参数。
设
为训练集中第c类样本组合而成的集合;
为假设样本分布的某种概率分布的参数向量;x为
中的某一样本,则目标为:

找出合适的
使得上述式子能得到最大值(即找到合适的参数使得更多的样本满足这样的分布)。
但是上述式子容易造成下溢(突破最小极限),所以通常又引入对数似然

于是最终的目标式化为:
解得:(其中n为
的总数)
; 
朴素贝叶斯分类器假设所有属性相互独立。
设样本属性集合为
( n 为属性数目),
为样本x在第i属性上的取值;
样本类别集合为
“所有属性相互独立”才有下式的第二步

因为对于所有类别来说P(x)都一样,所以在求最大值时无需考虑它的影响。
所以目标式化为:
即有

为了避免其他属性携带的信息被训练集中未出现的属性抹去,在估计概率是通常进行平滑。

(1)简单,学习效率高
(2)分类过程中时空开销小
受假设变量间独立与假设分布情况的影响
- from sklearn import metrics
- from sklearn.naive_bayes import GaussianNB
- from sklearn.model_selection import train_test_split
- from sklearn import datasets
- import pandas as pd
- from sklearn.metrics import classification_report
-
- data = datasets.load_iris()
- iris_target = data.target
- iris_features = pd.DataFrame(data=data.data, columns=data.feature_names)
- train_x, test_x, train_y, test_y = train_test_split(iris_features, iris_target, test_size=0.3)
-
- clf = GaussianNB()
- clf.fit(train_x, train_y)
-
- y_predict = clf.predict(test_x)
- accuracy = metrics.accuracy_score(test_y, y_predict)
-
- print(accuracy)
- print(classification_report(test_y, y_predict))
输出

欢迎大家在评论区批评指正,谢谢~