数据挖掘十大算法之 naïve Bayes

article/2025/7/20 2:16:00

朴素贝叶斯法是基于贝叶斯定理和特征条件独立假设的分类方法。朴素贝叶斯法实现简单,学习与预测的效率都很高,被广泛应用于文本分类、垃圾邮件过滤、自然语言处理等场景。下面我们来介绍贝叶斯定理,在介绍贝叶斯定理之前,先介绍下条件概率和全概率公式。

条件概率

所谓条件概率,就是在事件 B B B 发生的条件下,事件 A A A 发生的概率,用 P ( A ∣ B ) P(A|B) P(AB) 来表示。在下面的文氏图中,定义了事件 A A A B B B,以及他们的交集 A ∩ B A\cap B AB A ‾ \overline A A A A A 的补集。则在事件 B B B 发生的条件下,事件 A A A 发生的概率为 P ( A ∣ B ) P(A|B) P(AB) = P ( A ∩ B ) P ( B ) \displaystyle{P (A \cap B)} \over \displaystyle{P(B)} P(B)P(AB) => P ( A ∩ B ) = P ( A ∣ B ) P ( B ) P(A \cap B)=P(A|B)P(B) P(AB)=P(AB)P(B);同理可得, P ( B ∣ A ) P(B|A) P(BA) = $\displaystyle{P (A \cap B)} \over \displaystyle{P(A)} $ => P ( A ∩ B ) = P ( B ∣ A ) P ( A ) P(A \cap B)=P(B|A)P(A) P(AB)=P(BA)P(A),于是 P ( A ∣ B ) P ( B ) = P ( B ∣ A ) P ( A ) P(A|B)P(B) = P(B|A)P(A) P(AB)P(B)=P(BA)P(A)
在这里插入图片描述

全概率公式

在上面的文氏图中, P ( B ) = P ( A ∩ B ) + P ( A ‾ ∩ B ) P(B) = P(A \cap B) + P(\overline A \cap B) P(B)=P(AB)+P(AB),代入上面的条件概率公式, P ( B ) = P ( A ) P ( B ∣ A ) + P ( A ‾ ) P ( B ∣ A ‾ ) P(B) = P(A)P(B|A) + P(\overline A)P(B|\overline A) P(B)=P(A)P(BA)+P(A)P(BA),这便是全概率公式。

贝叶斯定理

贝叶斯定理是 T h o m a s B a y e s Thomas Bayes ThomasBayes 为了解决一个逆概率问题所写的一篇文章。在当时,人们已经能够计算正向概率。例如,一个袋子里装有 m m m 个白球 和 n n n 个黑球,把手伸进去摸到白球的概率是多少?这就是一个正向概率问题,而逆概率问题正好反过来,我们事先并不知道袋子里黑球和白球的比例,而是不断伸手去摸球,根据摸到球的颜色来推测黑球与白球的比例。由上面的条件概率,我们可以推导出

P ( A ∣ B ) P(A|B) P(AB) = P ( B ∣ A ) P ( A ) P ( B ) \displaystyle P(B|A)P(A) \over \displaystyle P(B) P(B)P(BA)P(A)

这便是贝叶斯定理。 P ( A ) P(A) P(A) 称为先验概率, P ( A ∣ B ) P(A|B) P(AB) 称为后验概率,即在事件 B B B 发生之后,我们对事件 A A A 概率的重新评估。

朴素贝叶斯分类器

朴素贝叶斯的思想基础是,对于待分类项 x x x,求解在 x x x 出现的条件下各个类别出现的概率,哪个最大,就认为 x x x 属于哪个类别。设输入空间 $ \mathcal X \subseteq R^n$ 为 n n n 维向量的集合,输出空间为类标记集合 $ \mathcal Y = {c_1, c_2, …, c_k}$,输入为特征向量 x ∈ X x \in \mathcal X xX,输出为类标记 y ∈ Y y \in \mathcal Y yY X X X 是定义在输入空间 X \mathcal X X 上的随机向量, Y Y Y 是定义在输出空间 Y \mathcal Y Y 上的随机变量。假设有一个待分类项 x x x,为了确定 x x x 属于哪个类别,我们需要计算 P ( Y = c k ∣ X = x ) , k = 1 , 2 , . . . , K P(Y=c_k|X=x), k=1, 2, ..., K P(Y=ckX=x),k=1,2,...,K,选取概率 P ( Y = c k ∣ X = x ) P(Y=c_k|X=x) P(Y=ckX=x) 最大时对应的类别为 x x x 对应的类别。基于贝叶斯定理可以写为:

P ( Y = c k ∣ X = x ) P(Y=c_k|X=x) P(Y=ckX=x) = P ( X = x ∣ Y = c k ) P ( Y = c k ) P ( X = x ) \displaystyle P(X=x|Y=c_k)P(Y=c_k) \over \displaystyle P(X=x) P(X=x)P(X=xY=ck)P(Y=ck) , k = 1 , 2 , . . . , K ,k=1, 2, ..., K ,k=1,2,...,K

基于此公式来估计后验概率 P ( Y = c k ∣ X = x ) P(Y=c_k|X=x) P(Y=ckX=x) 的主要困难在于:条件概率 P ( X = x ∣ Y = c k ) P(X=x|Y=c_k) P(X=xY=ck) 是所有特征上的联合概率,难以从有限的训练样本直接估计而得。为避开这个障碍,朴素贝叶斯分类器采用了“特征条件独立假设”:对已知类别,假设所有特征相互独立。换言之,假设每个特征独立地对分类结果发生影响(这也是算法被叫做 朴素贝叶斯分类器的原因)。基于特征条件独立假设,可将上述公式重写为:
P ( Y = c k ∣ X = x ) \displaystyle P(Y=c_k|X=x) P(Y=ckX=x)
= ∏ j = 1 n P ( X ( j ) = x ( j ) ∣ Y = c k ) P ( Y = c k ) P ( X = x ) \displaystyle \prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)P(Y=c_k) \over \displaystyle P(X=x) P(X=x)j=1nP(X(j)=x(j)Y=ck)P(Y=ck) k = 1 , 2 , . . . , K k=1,2,...,K k=1,2,...,K

由于对所有的类别, P ( X = x ) P(X=x) P(X=x) 相同,所以
y y y = arg max ⁡ c k {\underset {c_k}{\operatorname {arg\,max} }} ckargmax P ( Y = c k ) ∏ j = 1 n P ( X ( j ) = x ( j ) ∣ Y = c k ) P(Y=c_k)\displaystyle\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k) P(Y=ck)j=1nP(X(j)=x(j)Y=ck) y y y 便是 x x x的分类)

下面便是如何求得, P ( Y = c k ) P(Y=c_k) P(Y=ck) P ( X ( j ) = x ( j ) ∣ Y = c k ) P(X^{(j)}=x^{(j)}|Y=c_k) P(X(j)=x(j)Y=ck)

极大似然估计

在朴素贝叶斯分类器中,学习意味着估计 P ( Y = c k ) P(Y=c_k) P(Y=ck) P ( X ( j ) = x ( j ) ∣ Y = c k ) P(X^{(j)}=x^{(j)}|Y=c_k) P(X(j)=x(j)Y=ck)。可以应用极大似然估计法估计相应的概率。我们先通过一个例子来了解下极大似然估计。假设一个袋子里装有黑白两种颜色的球,黑白球的数量以及比例未知,我们不可以一次把袋子中的球倒出来,只能每次从袋子中任意取一个球,记录球的颜色,然后将球放回袋子。假如我们重复取球 100 次之后,在取出的 100 个球中,有白球 60 个,黑球 40 个,那么请问袋子里黑白球的比例最有可能是多少?也许你会回答黑白球的比例为 4:6,那么这个答案背后的理论支撑是什么呢?我们假设袋子里黑球的比例为 p p p,那么白球的比例为 1 − p 1-p 1p,因为每抽一个球出来,在记录颜色之后,把抽出的球放回了袋子里,所以每次抽出来的球的颜色服从同一独立分布。这里我们把一次抽出来球的颜色称为一次抽样。题目中在一百次抽样中,60 次是白球的,40 次为黑球事件的概率是 P ( 样 本 结 果 ∣ M ) P(样本结果|M) P(M)。如果第一次抽样的结果记为 x 1 x_1 x1,第二次抽样的结果记为 x 2 x_2 x2…,第一百次抽样的结果为 x 100 x_{100} x100。那么样本结果为 ( x 1 , x 2 . . . . . , x 100 ) (x_1,x_2.....,x_{100}) (x1,x2.....,x100)。这样,我们可以得到如下表达式:

P ( 样 本 结 果 ∣ M ) P(样本结果|M) P(M)

= P ( x 1 , x 2 , … , x 100 ∣ M ) = P(x_1,x_2,…,x_{100}|M) =P(x1,x2,,x100M)

= P ( x 1 ∣ M ) P ( x 2 ∣ M ) … P ( x 100 ∣ M ) = < b r > p 40 ( 1 − p ) 60 = P(x_1|M)P(x_2|M)…P(x_{100}|M)=<br> p^{40}(1-p)^{60} =P(x1M)P(x2M)P(x100M)=<br>p40(1p)60

由于最后的概率只和 p p p 有关,不同的 p p p 会导致不同的结果。那么如何求 p p p 的值呢?极大似然估计采取的方法是让这个样本结果出现的可能性最大,也就是使得 p 40 ( 1 − p ) 60 p^{40}(1-p)^{60} p40(1p)60值最大,那么我们就可以看成是 p p p的方程,求导即可!令导数为0,即可求出 p = 0.4 p=0.4 p=0.4。这便是极大似然估计的思想。
先验概率 P ( Y = c k ) P(Y=c_k) P(Y=ck) 的极大似然估计是

P ( Y = c k ) P(Y=c_k) P(Y=ck) = ∑ i = 1 N I ( y i = c k ) N \displaystyle\sum_{i=1}^NI(y_i=c_k) \over \displaystyle N Ni=1NI(yi=ck) k = 1 , 2 , . . . , K k=1,2,...,K k=1,2,...,K
设第 j j j 个特征 x ( j ) x^{(j)} x(j) 可能取值的集合为 { a j 1 , a j 2 , . . . , a j s j } \{a_{j1}, a_{j2},...,a_{js_j}\} {aj1,aj2,...,ajsj},条件概率 P ( X ( j ) = a j l ∣ Y = c k ) P(X^{(j)}=a_{jl}|Y=c_k) P(X(j)=ajlY=ck) 的极大似然估计是

P ( X ( j ) = a j l ∣ Y = c k ) P(X^{(j)}=a_{jl}|Y=c_k) P(X(j)=ajlY=ck) = ∑ i = 1 N I ( x i ( j ) = a j l , y i = c k ) ∑ i = 1 N ( y i = c k ) \displaystyle\sum_{i=1}^NI(x_i^{(j)} = a_{jl}, y_i=c_k) \over \displaystyle\sum_{i=1}^N(y_i=c_k) i=1N(yi=ck)i=1NI(xi(j)=ajl,yi=ck) j = 1 , 2 , . . . , n ; l = 1 , 2 , . . . , S j ; k = 1 , 2 , . . . , K j=1,2,...,n;l=1,2,...,S_j;k=1,2,...,K j=1,2,...,n;l=1,2,...,Sj;k=1,2,...,K
式中, x i ( j ) x_i^{(j)} xi(j) 是第 i i i 个样本的第 j j j 个特征; a j l a_{jl} ajl 是第 j j j 个特征可能取的第 l l l 个值; I I I 为指示函数。

例子

下面我们通过一个例子来看下朴素贝叶斯分类器的工作过程,下表格包含了天气状况和是否去打高尔夫的关系,表中 outlook、temperature、humidity、windy 为特征,取值的集合分别为 {rainy, overcast, sunny},{hot, mild, cool},{high, normal},{false, true},playgolf 为类标记,取值为 {no, yes}。如果今天天气的状况为 (sunny, hot, normal, false),我们是否要去打高尔夫球呢?

outlooktemperaturehumiditywindyplaygolf
rainyhothighfalseno
rainyhothightrueno
overcasthothighfalseyes
Sunnymildhighfalseyes
Sunnycoolnormalfalseyes
Sunnycoolnormaltrueno
overcastcoolnormaltrueyes
rainymildhighfalseno
rainycoolnormalfalseyes
Sunnymildnormalfalseyes
rainymildnormaltrueyes
overcastmildhightrueyes
overcasthotnormalfalseyes
Sunnymildhightrueno

根据极大似然估计,容易计算下列概率:

P(playgolf=yes) = 9 14 9 \over 14 149,P(playgolf=no) = 5 14 5 \over 14 145

P(outlook=rainy|playgolf=yes) = 2 9 2 \over 9 92,P(outlook=overcast|playgolf=yes) = 4 9 4 \over 9 94,P(outlook=sunny|playgolf=yes) = 1 3 1 \over 3 31
P(outlook=rainy|playgolf=no) = 3 5 3 \over 5 53,P(outlook=overcast|playgolf=no) = 0 5 0 \over 5 50,P(outlook=sunny|playgolf=no) = 2 5 2 \over 5 52


P(temperature=hot|playgolf=yes) = 2 9 2 \over 9 92,P(temperature=mild|playgolf=yes) = 4 9 4 \over 9 94,P(temperature=cool|playgolf=yes) = 1 3 1 \over 3 31
P(temperature=hot|playgolf=no) = 2 5 2 \over 5 52,P(temperature=mild|playgolf=no) = 2 5 2 \over 5 52,P(temperature=cool|playgolf=no) = 1 5 1 \over 5 51


P(humidity=high|playgolf=yes) = 1 3 1 \over 3 31,P(humidity=normal|playgolf=yes) = 2 3 2 \over 3 32
P(humidity=high|playgolf=no) = 4 5 4 \over 5 54,P(humidity=normal|playgolf=no) = 1 5 1 \over 5 51


P(windy=false|playgolf=yes) = 2 3 2 \over 3 32,P(windy=true|playgolf=yes) = 1 3 1 \over 3 31
P(windy=false|playgolf=no) = 2 5 2 \over 5 52,P(windy=true|playgolf=no) = 3 5 3 \over 5 53


对给定的(sunny, hot, normal, false)计算:

P(playgolf=yes)P(outlook=sunny|playgolf=yes)P(temperature=hot|playgolf=yes)

P(humidity=Normal|playgolf=yes)P(windy=false|playgolf=yes)

= 9 14 9 \over 14 149 * 1 3 1 \over 3 31 * 2 9 2 \over 9 92 * 2 3 2 \over 3 32 * 2 3 2 \over 3 32 ≈ \approx 0.0211 0.0211 0.0211


P(playgolf=no)P(outlook=sunny|playgolf=no)P(temperature=hot|playgolf=no)

P(humidity=normal|playgolf=no)P(windy=false|playgolf=no)

= 5 14 5 \over 14 145 * 2 5 2 \over 5 52 * 2 5 2 \over 5 52 * 1 5 1 \over 5 51 * 2 5 2 \over 5 52 ≈ \approx 0.0046 0.0046 0.0046


由于 0.0211 > 0.0046 0.0211 > 0.0046 0.0211>0.0046,所以今天去打高尔夫。

贝叶斯估计

用极大似然估计可能会出现所要估计的概率值为 0 的情况。这时会影响到后验概率的计算结果,是分类产生偏差。解决这一问题的方法是采用贝叶斯估计。具体地,条件概率的贝叶斯估计是


P λ ( X ( j ) = a j l ∣ Y = c k ) P_\lambda(X^{(j)}=a_{jl}|Y=c_k) Pλ(X(j)=ajlY=ck) = ∑ i = 1 N I ( x i ( j ) = a j l , y i = c k ) + λ ∑ i = 1 N ( y i = c k ) + S j λ \displaystyle\sum_{i=1}^NI(x_i^{(j)} = a_{jl}, y_i=c_k)+ \lambda \over \displaystyle\sum_{i=1}^N(y_i=c_k)+S_j\lambda i=1N(yi=ck)+Sjλi=1NI(xi(j)=ajl,yi=ck)+λ,式中 λ ≥ 0 \lambda \geq 0 λ0
等价于在随机变量各个取值的频数上赋予一个正数 λ > 0 \lambda > 0 λ>0。当 λ = 0 \lambda = 0 λ=0 时就是极大似然估计。常取 λ = 1 \lambda = 1 λ=1,这时称为拉普拉斯平滑。同样,先验概率的贝叶斯估计是
P λ ( Y = c k ) P_\lambda(Y=c_k) Pλ(Y=ck) = ∑ i = 1 N I ( y i = c k ) + λ N + K λ \displaystyle\sum_{i=1}^NI(y_i=c_k)+\lambda \over \displaystyle N+K\lambda N+Kλi=1NI(yi=ck)+λ
使用贝叶斯估计计算上面例子中的概率为:


P(playgolf=yes) = 10 16 10 \over 16 1610,P(playgolf=no) = 6 16 6 \over 16 166

P(outlook=rainy|playgolf=yes) = 1 4 1 \over 4 41,P(outlook=Overcast|playgolf=yes) = 5 12 5 \over 12 125
P(outlook=sunny|playgolf=yes) = 1 3 1 \over 3 31,P(outlook=rainy|playgolf=no) = 1 2 1 \over 2 21,P(outlook=Overcast|playgolf=no) = 1 8 1 \over 8 81,P(outlook=sunny|playgolf=no) = 3 8 3 \over 8 83


P(temperature=hot|playgolf=yes) = 1 4 1 \over 4 41,P(temperature=mild|playgolf=yes) = 5 12 5 \over 12 125
P(temperature=cool|playgolf=yes) = 1 3 1 \over 3 31,P(temperature=hot|playgolf=no) = 3 8 3 \over 8 83,P(temperature=mild|playgolf=no) = 3 8 3 \over 8 83,P(temperature=cool|playgolf=no) = 1 4 1 \over 4 41


P(humidity=high|playgolf=yes) = 4 11 4 \over 11 114,P(humidity=normal|playgolf=yes) = 7 11 7 \over 11 117
P(humidity=high|playgolf=no) = 5 7 5 \over 7 75,P(humidity=normal|playgolf=no) = 2 7 2 \over 7 72


P(windy=false|playgolf=yes) = 7 11 7 \over 11 117,P(windy=true|playgolf=yes) = 4 11 4 \over 11 114
P(windy=false|playgolf=no) = 3 7 3 \over 7 73,P(windy=true|playgolf=no) = 4 7 4 \over 7 74


对给定的(sunny, hot, normal, false)计算:

P(playgolf=Yes)P(outlook=sunny|playgolf=yes)P(temperature=hot|playgolf=yes)

P(humidity=normal|playgolf=yes)P(windy=false|playgolf=yes)

= 10 16 10 \over 16 1610 * 1 3 1 \over 3 31 * 1 4 1 \over 4 41 * 7 11 7 \over 11 117 * 7 11 7 \over 11 117 ≈ \approx 0.0211


P(playgolf=no)P(outlook=sunny|playgolf=no)P(temperature=hot|playgolf=no)

P(humidity=normal|playgolf=no)P(windy=false|playgolf=no)

= 6 14 6 \over 14 146 * 2 5 2 \over 5 52 * 2 5 2 \over 5 52 * 1 5 1 \over 5 51 * 2 5 2 \over 5 52 ≈ \approx 0.0065


由于 0.0211 > 0.0065,所以今天去打高尔夫。

鸢尾花分类

  1. 导入库
import pandas as pd
from sklearn import metrics
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.preprocessing import StandardScaler
from sklearn.naive_bayes import GaussianNB
  1. 读取数据
iris_data = pd.read_csv('Iris.csv')
  1. 将数据集分成训练数据集和测试数据集
y = iris_data['Species']
x = iris_data[['SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 'PetalWidthCm']]
train_x, test_x, train_y, test_y = train_test_split(x, y, test_size=0.3, random_state=33)
  1. 使用训练数据对模型进行训练,并使用得到的模型对测试数据进行测试。
gnb = GaussianNB()
gnb.fit(train_x, train_y)
predict_y = gnb.predict(test_x)
  1. 输出测试结果
print("NB准确率: %.4lf" % accuracy_score(test_y, predict_y))
  1. output
NB准确率: 0.9556

糖尿病的预测

糖尿病的预测是根据患者的一些信息来预测患者是否有糖尿病。下面我们通过 Scikit-learn 中的 k k k-NN 算法对患者是否患有糖尿病进行预测。

  1. 导入库
import pandas as pd
from sklearn import metrics
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.preprocessing import StandardScaler
  1. 读取数据
diabetes_data = pd.read_csv('diabetes.csv')
  1. 对数据进行清洗,对于某列数据中的0值,使用这一列值的平均值进行填充。
diabetes_data.replace({'Glucose': 0,'BloodPressure': 0,'SkinThickness': 0,'BMI': 0,'Insulin': 0
}, np.NaN, inplace=True)glucose_mean = diabetes_data['Glucose'].mean()
blood_pressure_mean = diabetes_data['BloodPressure'].mean()
skin_thickness_mean = diabetes_data['SkinThickness'].mean()
bmi_mean = diabetes_data['BMI'].mean()
insulin_mean = diabetes_data['Insulin'].mean()diabetes_data['Glucose'].replace(np.NaN, glucose_mean, inplace=True)
diabetes_data['BloodPressure'].replace(np.NaN, blood_pressure_mean, inplace=True)
diabetes_data['SkinThickness'].replace(np.NaN, skin_thickness_mean, inplace=True)
diabetes_data['BMI'].replace(np.NaN, bmi_mean, inplace=True)
diabetes_data['Insulin'].replace(np.NaN, insulin_mean, inplace=True)
  1. 将数据集分成训练数据集和测试数据集。
y = diabetes_data['Outcome']
x = diabetes_data[['Pregnancies', 'Glucose', 'BloodPressure', 'SkinThickness', 'Insulin', 'BMI', 'DiabetesPedigreeFunction', 'Age']]
train_x, test_x, train_y, test_y = train_test_split(x, y, test_size=0.2, random_state=0)
  1. 对数据进行规范化。
sc_x = StandardScaler()
train_x = sc_x.fit_transform(train_x)
test_x = sc_x.fit_transform(test_x)
  1. 使用训练数据对模型进行训练,并使用得到的模型对测试数据进行测试。
gnb = GaussianNB()
gnb.fit(train_x, train_y)
predict_y = gnb.predict(test_x)
  1. 输出测试结果
print("NB 准确率: %.4lf" % accuracy_score(test_y, predict_y))
  1. output
NB 准确率: 0.7835

总结

本文阐述了朴素贝叶斯法的理论知识,并通过两个例子介绍了朴素贝叶斯法的实际应用。


http://chatgpt.dhexx.cn/article/jfMglyoY.shtml

相关文章

专题:深度神经网络基本问题的原理详细分析和推导

文章目录 **写在最前面****1 神经网络算法的直观了解****1.1 神经网络过程描述**&#xff1a;**1.2 神经网络相关的几个问题****1.2.1 表征假设和激活函数** **1.2.2 结构设计(Architecture Design)****1.2.3 代价函数(Cost Function)和优化目标(Optimization objective)****1.…

第四章 朴素贝叶斯法

文章目录 朴素贝叶斯法的学习与分类基本方法数据定义学习联合概率分布如何求出条件概率分布&#xff1f;如何分类&#xff1f; 后验概率最大化的含义 朴素贝叶斯的参数估计法极大似然估计学习分类算法贝叶斯估计 朴素贝叶斯法&#xff08;与贝叶斯估计是不同的概念&#xff09;…

GAN生成对抗式神经网络数学推导

由上面一篇文章我们已经知道了&#xff0c;如果我们从真实数据分布里面取n个样本&#xff0c;根据给定样本我们可以列出其出现概率的表达式&#xff0c;那么生成这N个样本数据的似然(likelihood)就是 l ( θ ) ∏ i 1 N p ( x i ∣ θ ) l ( \theta ) \prod _ { i 1 } ^ { …

《统计学习方法》学习笔记(三)之 朴素贝叶斯法

朴素贝叶斯法 总述 朴素贝叶斯法是基于贝叶斯定理与特征条件独立性假设的分类方法。对于给定的训练数据集&#xff0c;首先基于特征独立性假设学习输入/输出的联合概率分布&#xff1b;然后基于此模型&#xff0c;对给定的输入 x x x&#xff0c;利用贝叶斯定理求出后验概率最…

朴素贝叶斯(二)|极大似然估计+学习与分类算法+贝叶斯估计| 《统计学习方法》学习笔记(十六)

朴素贝叶斯法的参数估计 1. 极大似然估计 在朴素贝叶斯法中&#xff0c;学习意味着估计 P ( Y c k ) P(Yc_k) P(Yck​)和 P ( X ( j ) x ( j ) ∣ Y c k ) P(X^{(j)}x^{(j)}|Yc_k) P(X(j)x(j)∣Yck​)。可以应用极大似然估计法估计相应的概率。先验概率 P ( Y c k ) P(Yc…

一文看懂 “极大似然估计” 与 “最大后验估计” —— 最大后验估计篇

本文历次修订后全长 2万8000余字&#xff0c;受到 CSDN 博文字数限制&#xff0c;故切分两篇发布&#xff0c;所以现在是两文看懂了… 前篇介绍参数估计背景和极大似然估计&#xff1b;本篇介绍最大后验估计和两种方法对比请务必先看前文&#xff1a;一文看懂 “极大似然估计”…

【生成模型】极大似然估计,你必须掌握的概率模型

上一期为大家说明了什么是无监督生成模型。在无监督生成模型中&#xff0c;极大似然法一直扮演着非常核心的位置&#xff0c;我们必须对它有深刻的理解&#xff0c;本期小米粥将为大家讲一下极大似然法的那些事情。 作者&编辑 | 小米粥 1 一个小游戏&#xff1a;取球猜概率…

透彻理解机器学习中极大似然估计MLE的原理(附3D可视化代码)

文章目录 相关资料一、什么是概率&#xff0c;什么是似然二、极大似然估计 Maximum Likelihood Estimation (MLE) 的含义2.1 机器学习中的极大化似然函数2.2 极大似然估计和损失函数的关系VAE最大化似然函数推导出损失函数 三、代码可视化&#xff1a;极大似然估计3.1 似然函数…

C#RSA密码以及利用欧几里得算法实现两数互质的判断

最近做课程设计,想到以前看过RSA密码的相关内容&#xff0c;于是就想用刚学的C#做一个数字加密系统。RSA加密的流程如下&#xff1a; 来看一个“玩具式”的例子&#xff1a; (1)选取两个素数p2,q11,于是N22. (2)构造数,这是小于22且不含因数2和11的自然数的个数。 (3)选一个…

判断两数互质,java实现

数组下标i和j值互质时&#xff0c;a[i][j] true,反之false Write a program to create an n * n Boolean array. If I and j are coprime, a [i] [J] is true, otherwise it is false /** * When Array index Mutuality ,a[i][j] true,else is false * 数组i和j值互质时&…

两个质数互质是_两个数互质是什么意思 如何判断

互质数为数学中的一种概念&#xff0c;即两个或多个整数的公因数只有1的非零自然数。公因数只有1的两个非零自然数&#xff0c;叫做互质数。下面是小编整理的详细内容&#xff0c;一起来看看吧&#xff01; 两个数互质是什么意思 质数为数学中的一种概念&#xff0c;即两个或多…

char、wchar_t、ACHAR、WCHAR、TCHAR

最近用到上面几种不同的字符类型,下面贴上在网上收集到的资料。 1、char 单字节变量类型,最多表示256个字符。 2、wchar_t 宽字节变量类型,用于表示Unicode字符,它实际定义在<string.h>里:typedef unsigned short wchar_t。 定义宽字节类型方法如下: wchar_…

wchar* 转换成 string

wchar* 转换成 string 123 windows 类型转换问题 1 // Your wchar_t* wstring ws(L"Hello World"); // your new String std::string str(ws.begin(), ws.end()); // Show String std::cout << str << std::endl; 2 std::wstring wstr(L"Test&…

wchar_t类型

今天在看前辈的项目的时候学习到了一个以前没有通过的数据类型&#xff1a;宽字符wchar_t类型。 先来看看他占多大的空间吧&#xff0c; 从图中可以看到wchar_t占的空间的大小为2个字节&#xff0c; 然后来确定一下他是无符号还是有符号的 由上图可见&#xff0c;他应该是无符号…

char与wchar_t字符串

C里的字符串类型是比较二的&#xff0c;因为有太多表示方法&#xff1a;char*、string、字符串数组、wchar_t*、wstring&#xff0c;今天就来缕一缕这些玩意。 char* char* 貌似是C字符串最基础最核心的。 看以下四个字符串声明及输出结果&#xff1a; 先说说核心&#xff0c…

wchar_t的用法

wchar_t的解释可以看这里:这里 程序和解析: 1 # include<stdio.h>2 # include<stdlib.h>3 # include<locale.h>//设置本地化<

WCHAR的简单操作

WCHAR 是双字节类型&#xff0c;一般它用来存储那些双字节而不是单字节字符.较长的字节数可以支持 在应用程序的国际发布版本里所使用的扩展字符集(如常用的Unicode字符集). 比如说&#xff1a;在中文系统下开发的软件&#xff0c;当应用到日文操作系统时&#xff0c;如果没有采…

ADI Diff-Amp Calculator差分放大器件计算器使用方法

Diff-Amp Calculator便于计算单端转差分放大&#xff0c;差分转差分放大&#xff0c;在满足输入信号和输出信号的参数要求下&#xff0c;配置元件增益自动计算Rf和Rg阻值大小。 下载地址&#xff1a;https://www.analog.com/cn/design-center/interactive-design-tools/adi-dif…

双电阻差分电流采样_差分信号和差分电路讲解 差分放大电路应用

1、什么是差分信号?为什么要用差分信号? 两个芯片要通信,我们把它们用一根导线连接起来,一个传输 1,另一个接受 1,一个传输 0,另一个接受 0,不是很好吗?为什么还要搞其他的花花肠子。 因为有干扰,各种各样的干扰,比如温度,电磁辐射等等,这些干扰使得传输的 1 不再…

双电阻差分电流采样_差分放大电路的应用

差分运算放大电路,对共模信号得到有效抑制,而只对差分信号进行放大,因而得到广泛的应用。 1、如下图是差分电路的电路构型 目标处理电压:是采集处理电压,比如在系统中像母线电压的采集处理,还有像交流电压的采集处理等。 差分同相/反相分压电阻:为了得到适合运放处理的电…