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>