python代码实现朴素贝叶斯树对鸢尾花分类

1、导入朴素贝叶斯模型,划分数据集

from sklearn import datasets
from sklearn.naive_bayes import GaussianNB

iris=datasets.load_iris()
iris_x=iris.data
iris_y=iris.target
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:]]

2、训练模型

clf = GaussianNB()#简单高斯朴素贝叶斯分类器,无需传参
clf.fit(iris_x_train,iris_y_train)

3、为测试数据集分类

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)
iris_y_predict = 
[1 2 1 0 0 0 2 1 2 0]
iris_y_test = 
[1 1 1 0 0 0 2 1 2 0]
Accuracy: 0.9

素贝叶斯假设前提,那就是所有的条件对结果都是独立发生作用的。

算法的优点
逻辑清晰简单、易于实现,适合大规模数据。
根据算法的原理,只要我们把样本中所有属性相关 的概率值都计算出来,然后分门别类地存储好,就获得了我们的朴素贝叶斯模型。
运算开销小。
根据上一条我们可以得知,所有预测需要用到的概率都已经准备好,当新数据来了 之后,只需要获取对应的概率值,并进行简单的运算就能获得结果。
对于噪声点和无关属性比较健壮。
噪声点和无关属性对算法影响较小,在很多邮件服务中仍然一 直沿用这个方法进行垃圾邮件过滤。
预测过程快。
由于所有需要用到的属性相关概率都已经计算出来了,在新数据到来需要预测的时候,只需要把对应的一些概率值取出来进行计算就可以获得结果,所用到的时间和空间都很小。

算法的缺点
由于做了 “各个属性之间是独立的”这个假设,同样该算法也暴露了缺点。因为在实际应用中,属性之间完全独立的情况是很少出现的,如果属性相关度较大,那么分类的效果就会变差。所以在具体应用的时候要好好考虑特征之间的相互独立性,再决定是否要使用该算法,比如,维度太多的数据可能就不太适合,因为在维度很多的情况下,不同的维度之间越有可能存在联合的情况,而不是相互独立的,那么模型的效果就会变差。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值