datawhale-sklearn组队学习-task03

贝叶斯分类(朴素贝叶斯)

理论

贝叶斯分类器的理论框架基于贝叶斯决策论(Bayesian decision theory),而贝叶斯决策论是概率框架下实施决策的基本方法。对分类任务来说,在所有相关概率都已知的理想情形下,贝叶斯决策论考虑如何基于这些概率和误判损失来选择最优的类别标记。

具体来说,若目标是最小化分类错误率,则我们要找的就是:对于每个样本 x,选择能使后验概率 P(C | x)最大的类别标记。 而基于贝叶斯公式来估计后验概率 P(C I x) 的主要用难在于:类条件概率 P(x I c) 是所有属性上的联合概率,难以从有限的训练样本直接
估计而得.为避开这个障碍,朴素贝叶斯分类器采用了"属性条件独立性假设":对已知类别,假设所有属性相互独立.换言之,假设每个属性独立地对分类结果发生影响.则有
请添加图片描述
对连续属性可考虑概率密度函数,假定p(xi|c)服从正态分布其参数分别是第C类样本在第i个属性上取值的均值和方差,则有
在这里插入图片描述
需注意,若某个属性值在训练集中没有与某个类同时出现过,则直接进行概率估计,再进行判别将出现问题.在估计概率值时通常要进行"平滑" (smoothing) ,常用"拉普拉斯修正:

请添加图片描述

代码实战

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()![请添加图片描述](https://img-blog.csdnimg.cn/c8eb5812d8114f2a9bcc18f96c71ce42.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bq35Li6,size_20,color_FFFFFF,t_70,g_se,x_16)

from sklearn.datasets import make_blobs
# make_blobs:为聚类产生数据集
# n_samples:样本点数,n_features:数据的维度,centers:产生数据的中心点,默认值3
# cluster_std:数据集的标准差,浮点数或者浮点数序列,默认值1.0,random_state:随机种子
X, y = make_blobs(n_samples = 100, n_features=2, centers=2, random_state=2, cluster_std=1.5) 
plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap='RdBu')
plt.show()

请添加图片描述

from sklearn.naive_bayes import GaussianNB
model = GaussianNB()
model.fit(X, y)
rng = np.random.RandomState(0)
X_test = [-6, -14] + [14, 18] * rng.rand(2000, 2)
y_pred = model.predict(X_test)

plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap='RdBu')
lim = plt.axis()
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_pred, s=20, cmap='RdBu', alpha=0.1)
plt.axis(lim)
plt.show()

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值