- ** 基本原理:**
朴素贝叶斯中的朴素是认为各个特征或者属性条件之间相互独立,这种假设在实际中有时并不成立,因此分类并不稳定,贝叶斯代表根据贝叶斯定理构建分类模型
贝叶斯算法:
P(A|B)=P(B|A)*P(A)/P(B)
P(B) 为先验概率 P(B|A)为相对于B的条件概率 P(B)为B生成的概率
- python中 scikit-learn库的使用
在Scikit-learn库中,根据特征的先验概率模型分为GaussianNB(先验为高斯分布)、MultinomialNB(先验为多项式分布)与BernoulliNB(先验为伯努利分布)等3个朴素贝叶斯分类算法类。
如果样本特征分布大部分是连续值,使用GaussianNB较好;
如果样本特征分布大部分是多元离散值,使用MultinomialNB较为合适;
如果样本特征是二元离散值或者很稀疏的多元离散值,应该使用BernoulliNB。
- 以GaussianNB为例构建朴素贝叶斯模型
导入 GaussianNB字库:
from sklearn.naive_bayes import GaussianNB
构建朴素贝叶斯分类器对象:
nb = GaussianNB()
nb.fit(x,y):根据样本x与类别标识y对数据进行拟合。
nb. predict(x):输出测试集x的预测类别。
nb. predict_proba(x):输出测试集x在各个类别上预测概率。
- 应用实例:根据天气情况预测是否适合打网球的概率
from sklearn.naive_bayes import GaussianNB
import numpy as np# 天气晴为1,多云为2,雨为3
# 气温热为1 适中为2 冷为3
# 有风为1 无风为0
# [天气,气温,是否有风]
X = np.array([[1,1,1],[2,1,0],[3,2,0],[3,3,0],[3,3,1],
[2,3,1],[1,2,0],[1,3,0],[3,2,0],[1,2,1],[2,2,1],[2,1,0],[3,2,1],[1,1,0]])
# 适合打网球为1 不适合为0
Y = np.array([1,1,0,0,0
,0,1,0,0,1,1,1,0,1])model = GaussianNB() # 构建模型
model.fit(X,Y) # 拟合数据x_text=np.array([[1,2,0],[1,1,0]])
ptedict = model.predict(x_text) # 预测测试数据否适合打网球
print(ptedict) #输出为[1 1]proba= model.predict_proba([[1,2,0]]) #适合打网球的概率
print(proba)#[[0.08798276 0.91201724]] 不适合打网球的概率为0.08798276 适合打网球的概率为0.91201724
推荐阅读
- 深度学习|图卷积神经网络GCN
- python在使用绝对路径时出现OSError: [Errno 22] Invalid argument: ‘E:\python\python扩展\text_file\pi_digits.txt
- 深度学习|BP神经网络实现手写数字识别
- 数据分析与机器学习|大厂面试机器学习算法(5)推荐系统算法
- python|网页自动填写
- 机器学习|吴恩达机器学习作业二(利用逻辑回归模型预测一个学生是否被学校录取 ,二分类问题(python实现))
- oeasy教您玩转python - 011 - # 输出时间
- python|【机器学习】一文详解异常检测算法(KNN)
- python|用Python实现一个电影订票系统