朴素贝叶斯------算一算是否要买延误险


概率公式

P(A|B)=    P(B|A)P(A)

                           P(B)

有一个前提假设:所有条件对结果都是独立发生作用的

优点:

1.逻辑清晰简单、易于实现,适合大规模数据

2.运算开销小

3.对于噪声和无关属性比较健壮

4.预测过程很快

 

缺点:

在具体应用的时候要考虑特征之间的相互独立性,再决定是否要使用该算法

 

#朴素贝叶斯
from sklearn import datasets #sklearn的数据集
from sklearn.naive_bayes import GaussianNB #高斯分布型的朴素贝叶斯
import numpy as np #矩形运算库numpy

np.random.seed(0)
#设置随机种子,不设置的话默认是按系统时间作为参数,设置后可以保证我们每次产生的随机数是一样的

iris = datasets.load_iris() #获取鸢尾花数据集
iris_x = iris.data #数据部分
iris_y = iris.target #类别部分

#从150条数据中选取140条作为训练集,10条作为测试集。permutation接收一个数作为参数(这里为数据集长度150),
#产生一个0-149乱序一维数组
indices = np.random.permutation(len(iris_x))
iris_x_train = iris_x[indices[:-10]]  #训练集数据
iris_y_train = iris_y[indices[:-10]]  #训练集标签
iris_x_test = iris_x[indices[-10:]]   #测试集数据
iris_y_test = iris_y[indices[-10:]]   #测试集数据

#构造朴素贝叶斯分类器
clf = GaussianNB()

#调用该对象的训练方法,主要接收两个参数:训练数据集及其类别标签
clf.fit(iris_x_train,iris_y_train) #拟合

#对测试结果进行预测

iris_y_predict = clf.predict(iris_x_test)

#调用该对象的打分方法,计算出准确率
score = clf.score(iris_x_test,iris_y_test,sample_weight=None)

#输出测试结果
print('iris_y_predict=')
print(iris_y_predict)

#输出原始测试数据集的正确标签,以方便对比
print('iris_y_test=')
print(iris_y_test)

#输出准确率计算结果
print('Accuracy:',score)