朴素贝叶斯算法

贝叶斯是一种概率算法,根据先验概率和观测数据得出后验概率,也就是从结果找原因。贝叶斯概率公式

P ( C ∣ X ) = P ( X ∣ C ) ⋅ P ( C ) P ( X ) P(C|X) = \frac{P(X|C) \cdot P(C)}{P(X)} P(CX)=P(X)P(XC)P(C)

  • P(C|X) : 后验概率,满足 B 的条件下, A的概率。
  • P(X|C) : 拟然函数,满足 A 的条件下, B的概率。
  • P ( C ) P(C) P(C) : 先验概率.
  • P(X) : 全概率.

朴素贝叶斯算法假设各个样本之间的概率是独立的,通过以下公式可以分解为各个特征的概率。

P ( X ∣ C ) = P ( x 1 ∣ C ) ⋅ P ( x 2 ∣ C ) ⋅ … ⋅ P ( x n ∣ C ) P(X|C) = P(x_1|C) \cdot P(x_2|C) \cdot \ldots \cdot P(x_n|C) P(XC)=P(x1C)P(x2C)P(xnC)

转换后的公式为,P(X) 全概率是一个固定值,对最终结果没有影响:

P ( C ∣ X ) ∝ P ( C ) ⋅ ∏ i = 1 n P ( x i ∣ C ) P(C|X) \propto P(C) \cdot \prod_{i=1}^n P(x_i|C) P(CX)P(C)i=1nP(xiC)

代码实现

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=0)
gnb = GaussianNB()
y_pred = gnb.fit(X_train, y_train).predict(X_test)
print("Accuracy of GaussianNB in iris data test:", 
      accuracy_score(y_test, y_pred))

在这里插入图片描述

总结

朴素贝叶斯假设特征是独立事件,降低了计算复杂度,可以应用与简单的分类场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值