机器学习:高斯朴素贝叶斯分类器(原理+python实现)

本文介绍了使用高斯朴素贝叶斯分类器进行鸢尾花识别的原理,通过贝叶斯准则计算概率进行类别预测。文章讨论了在特征相互独立的假设下,如何利用高斯概率分布函数计算连续型特征的概率,并提供了代码实现逻辑及示例,展示了如何对特定花的特征进行类别预测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 原理

具体例子
我们通过判定花萼长度,花萼宽度,花瓣长度,花瓣宽度的尺寸大小来识别鸢尾花的类别。关于数据集,是通过sklean加载而来,这次只采用前一百个数据进行训练,使得花的类别只有0和1两个类别,因此我们这次目标是通过花的四个特征来判断类别是0还是1。

from sklearn.datasets import load_iris
def create_data():
    iris = load_iris()
    df = pd.DataFrame(iris.data, columns=iris.feature_names)
    df['label'] = iris.target
    df.columns = ['sepal length', 'sepal width', 'petal length', 'petal width', 'label']
    data = np.array(df.iloc[:100, :])
    print(data)
    return data[:,:-1], data[:,-1]

根据贝叶斯准则,可以得到在固定特征下,每个类别的概率,其表达式具体如下:
在这里插入图片描述
如果p(类别1│固定特征) > p(类别2│固定特征),则在给出的特征下,类别属于1的概率大,因此预测类别为1,可以看出贝叶斯决策理论是通过计算概率,选择概率较大的来预测类别。
需要注意的是,p(固定特征│类别i)中的固定特征有4个,如果假设各个特征是相互独立的,则可以写成(之所以在贝叶斯前面加上朴素,正是这个独立性假设):

  • p(固定特征1│类别i)*p(固定特征2│类别i)*p(固定特征3│类别i)p(固定特征4│类别i)

那么针对p(固定特征1│类别1)而言,当选择高斯模型时,可以通过下述公式计算:
在这里插入图片描述
其中,σ^2和μ表示为方差和期望,是通过在类别1的训练样本里,计算出特征1的方差和期望,固定特征1表示为特征1的一个固定值,因此可以根据测试数据中一个数据的特征1的值来计算出该数据的p(固定特征1│类别1)。
看到这里,可能会想,为什么p(固定特征1│类别1)时, 为何要用高斯概率分布函数来计算概率呢?
这是因为数据集的特征都是属于连续型的特征,并非离散型,所以当给出一个具体的特征值的时候,是无法通过数据集来计算出该特征值的概率,此外,数据集的样本数一般也较少,无法将特征值划分到某个区间来计算概率。因此,当遇到这样的问题时,我们假设特征的分布是符合高斯分布,那么就可以通过该分布函数计算出任意特征值所对应的概率,所以p(固定特征1│类别1)的问题也就解决了。

二 代码实现逻辑

输入训练集数据
输入测试集数据
对于每一个类别i:
	对于每一个特征j:
		计算训练集的方差,期望
		根据测试集来计算p(固定特征j│类别i)
根据测试集来计算p_i=p(固定特征│类别i)* p(类别)
根据p_i相对大小,返回预测类别
计算分类正确率

三 代码示例

import numpy as np
import matplotlib.pyplot as plt
from sklearn
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值