AI-机器学习-自学笔记(六)朴素贝叶斯算法

朴素贝叶斯算法(Naive Bayesian algorithm) 是应用最为广泛的分类算法之一。

贝叶斯定理是关于随机事件A和B的条件概率(或边缘概率)的一则定理。其中P(A|B)是在B发生的情况下A发生的可能性。

贝叶斯公式(发表于1763年):


贝叶斯分类器的分类原理是通过某对象的先验概率,利用贝叶斯公式计算出其在所有类别上的后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类。

打个通俗点的比方,我们知道非洲有很多黑人,即已知非洲人为黑人的先验概率比较高,如果我们在街上碰到个黑人,我们判断他可能来自哪里,比如我们认为他来自非洲的可能性比较大,即选取最大后验概率的类(来自非洲)作为我们的判断。

贝叶斯分类原理要求各个特征属性之间是独立的,不能互相影响,但在实际生活中,事物的各个特征属性往往是有联系的。朴素贝叶斯假定各个特征属性是独立的来进行分类研究,这就是“朴素”两字的含义。

朴素贝叶斯在scikit-learn中的实现类是GaussianNB

下面我们用鸢尾花数据集做一下朴素贝叶斯分类训练吧

 1 #导入所需库
 2 import numpy as np
 3 from sklearn.naive_bayes import BernoulliNB, GaussianNB
 4 from pandas import read_csv
 5  
 6 #导入鸢尾花集数据
 7 filename = 'data/iris/iris.data.csv' 
 8 names = ['separ-length','separ-width','petal-length','petal-width','class'] 
 9 dataset = read_csv(filename, names=names)
10 from sklearn.model_selection import train_test_split
11 from sklearn.metrics import accuracy_score 
12 #分离数据集
13 array = dataset.values 
14 X = array[:,0:4]
15 Y = array[:,4] 
16 validation_size = 0.2 
17 X_train,X_validation,Y_train,Y_validation = \
18 train_test_split(X, Y, test_size=validation_size)
19  
20 #定义模型
21 model = GaussianNB()
22 model.fit(X_train, Y_train)
23  
24 #训练模型
25 model.fit(X, Y)
26 #输出预测结果
27 print(X[55:56])
28 print(model.predict(X[55:56]))#必须以区间取值的方式,[4:5] 其实就是取 4 这个值

打印结果如下:

1 PS C:\coding\machinelearning>朴素贝叶斯-鸢尾花分类.py
2 [[5.7 2.8 4.5 1.3]]
3 ['Iris-versicolor']
4 PS C:\coding\machinelearning> 

 

posted on 2021-11-23 17:19  毕达哥拉斯  阅读(87)  评论(0编辑  收藏  举报

导航