贝叶斯算法数学原理
贝叶斯算法背景
贝叶斯算法推导
推导方法1
推导方法2
根据条件概率公式:
①P(A|B) = P(AB)/P(B) ----> P(AB) = P(A|B)·P(B)
②P(B|A) = P(AB)/P(A)) ----> P(AB) =P(B|A)·P(A)
贝叶斯定理应用实例
例1
例2
代码实战
贝叶斯算法API参数(以朴素贝叶斯为例)
class sklearn.naive_bayes.MultinomialNB(alpha=1.0, fit_prior=True, class_prior=None)
参数:
- MultinomialNB:多项式分布的朴素贝叶斯。
2.alpha: 控制模型拟合时的平滑度.
3.fit_prior: 是否去学习类的先验概率 - class_prior: 各个类别的先验概率,如果没有指定,则模型会根据数据自动学习, 每个类别的先验概率相同,等于类标记总个数N分之一。
属性:
1.class_log_prior_:每个类别平滑后的先验概率
2.intercept_:是朴素贝叶斯对应的线性模型,其值和class_log_prior_相同
3.feature_log_prob_:给定特征类别的对数概率(条件概率)。 特征的条件概率=(指定类下指定特征出现的次数+alpha)/(指定类下所有特征出现次数之和+类的可能取值个数*alpha)
4.coef_: 是朴素贝叶斯对应的线性模型,其值和feature_log_prob相同
5.class_count_: 训练样本中各类别对应的样本数
6.feature_count_: 每个类别中各个特征出现的次数
朴素贝叶斯naive bayes
"""
朴素贝叶斯:以鸢尾花数据集为例
"""
import pandas as pd
#可视化混淆矩阵
def cm_plot(y,yp):
from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as plt
cm = confusion_matrix(y, yp)
plt.matshow(cm, cmap=plt.cm.Blues)
plt.colorbar()
for x in range(len(cm)):
for y in range(len(cm)):
plt.annotate(cm[x,y],xy=(y,x),horizontalalignment='center',
verticalalignment='center')
plt.ylabel('True label')
plt.xlabel('Predicted label')
return plt
'''
数据预处理
'''
data = pd.read_csv(r'/Users/dx/Desktop/Python数据分析与机器学习/11.贝叶斯算法/贝叶斯算法/iris.csv',
header = None)
data = data.drop(0, axis = 1)
data.head()
X = data.drop(5,axis = 1)
y = data[5]
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = \
train_test_split(X, y, test_size = 0.2, random_state = 0)
'''
实例化:贝叶斯分类器
'''
from sklearn.naive_bayes import MultinomialNB
classifier = MultinomialNB(alpha = 1)
classifier.fit(x_train,y_train)
'''
训练集预测
'''
train_predicted = classifier.predict(x_train)
cm_plot(y_train, train_predicted)
'''
测试集预测
'''
test_predicted = classifier.predict(x_test)
cm_plot(y_test, test_predicted)