赞
踩
GaussianNB是高斯贝叶斯分类器,它假设特征条件概率分布满足高斯分布:
P
(
X
(
j
)
∣
y
=
c
k
)
=
1
2
π
σ
k
2
e
x
p
(
−
(
x
(
j
)
−
μ
k
)
2
2
σ
k
2
)
P(X^{(j)}|y=c_{k})=\frac{1}{\sqrt{2\pi \sigma _{k}^{2}}}exp(-\frac{(x^{(j)}-\mu _{k})^{2}}{2\sigma _{k}^{2}})
P(X(j)∣y=ck)=2πσk2
1exp(−2σk2(x(j)−μk)2)
其原型为:
class sklearn.naive_bayes.GaussianNB(*,
priors=None, var_smoothing=1e-09)
参数
实际应用一般不会进行调参
❐ priors
:表示类的先验概率,如果指定,则不根据数据调整先验;如果不指定,则自行根据数据计算先验概率
P
(
y
=
c
k
)
P(y=c_{k})
P(y=ck)
❐ var_smoothing
:浮点型,默认
1
e
−
9
1e^{-9}
1e−9,在估计方差时,为了追求估计的稳定性,将所有特征的方差中最大的方差以
v
a
r
_
s
m
o
o
t
h
i
n
g
var\_smoothing
var_smoothing比例添加到估计的方差中。
属性
❐ class_count_
:一个数组,形状为(n_classes,),是每个类别包含的训练样本数量。
❐ class_prior_
:一个数组,形状为(n_classes,),是每个类别的概率
P
(
y
=
c
k
)
P(y=c_{k})
P(y=ck)。
❐ classes_
:一个数组,形状为(n_classes,),分类器知道的类别。
❐ epsilon_
:浮点型,方差的绝对加值。
❐ sigma_
:一个数组,形状为(n_classes,n_features),是每个类别上每个特征的方差。
❐ theta_
:一个数组,形状为(n_classes,n_features),是每个类别上每个特征的均值。
方法
❐fit(X, y[, sample_weight])
:训练模型。
❐get_params([deep])
:获取模型参数。
❐partial_fit(X, y[, classes, sample_weight])
:追加训练模型。该方法主要用于大规模数据集训练,将大规模数据集分成若干小数据集,使用partial_fit方法追加训练模型。
❐predict(X)
:模型预测,返回预测值。
❐predict_log_proba(X)
:返回一个数组,数组的元素是
x
x
x预测为各类被的概率的对数值。
❐predict_proba(X)
:返回一个数组,数组的元素是
x
x
x预测为各类被的概率。
❐score(X, y[, sample_weight])
:返回预测的准确率。
❐set_params(**params)
:设置参数。
示例
from sklearn.datasets import load_digits from sklearn.model_selection import train_test_split from sklearn.naive_bayes import GaussianNB # 读取数据集 dataset = load_digits() data, target = dataset.data, dataset.target # 拆分数据集 x_train, x_test, y_train, y_test = train_test_split(data, target, test_size=0.3, random_state=0) # 使用高斯贝叶斯进行分类 gsnbclf = GaussianNB() gsnbclf.fit(x_train, y_train) y_predict = gsnbclf.predict(x_test) print("预测的文本类别为:", y_predict) print("分类分数为:", gsnbclf.score(x_test, y_test))
BernoulliNB是伯努力贝叶斯分类器,它假设特征的条件概率分布满足二项分布:
P
(
X
(
j
)
∣
y
=
c
k
)
=
p
X
(
j
)
+
(
1
−
p
)
(
1
−
X
(
j
)
)
P(X^{(j)}|y=c_{k})= pX^{(j)}+(1-p)(1-X^{(j)})
P(X(j)∣y=ck)=pX(j)+(1−p)(1−X(j))
其中,要求特征的取值为
X
(
j
)
ϵ
{
0
,
1
}
X^{(j)}\epsilon \left \{ 0,1 \right \}
X(j)ϵ{0,1},且
P
(
X
(
j
)
∣
y
=
c
k
)
=
p
P(X^{(j)}|y=c_{k})= p
P(X(j)∣y=ck)=p。
其原型为:
class sklearn.naive_bayes.BernoulliNB(*, alpha=1.0, binarize=0.0, fit_prior=True, class_prior=None)
参数
❐alpha
:一个浮点数,默认为1.0。也就是指朴素贝叶斯所说的贝叶斯估计中
λ
\lambda
λ的值,
λ
=
1
\lambda=1
λ=1时为拉普拉斯平滑。
❐binarize
:一个浮点数或者None,默认为0.0。
❐fit_prior
:布尔值,默认为True.如果为True,则不去学习
P
(
y
=
c
k
)
P(y=c_{k})
P(y=ck),替代以均匀分布;如果为False,则去学习
P
(
y
=
c
k
)
P(y=c_{k})
P(y=ck)。
❐class_prior
:一个数组。它指定了每个类别的先验概率
P
(
y
=
c
1
)
,
P
(
y
=
c
2
)
,
⋯
,
P
(
y
=
c
k
)
P(y=c_{1}),P(y=c_{2}),\cdots,P(y=c_{k})
P(y=c1),P(y=c2),⋯,P(y=ck),不再从数据集中学得。
属性
❐class_count_
:一个数组,形状为(n_classes),每个类别包含得训练样本数量。
❐class_log_prior_
:一个数组,形状为(n_classes),每个类别调整后得经验概率分布对数值。
❐classes_
:一个数组,形状为(n_classes,)分类已知道得类别。
❐feature_count_
:一个数组,形状为(n_classes, n_features),训练过程中,每个类别每个特征遇到得样本数。
❐feature_log_prob_
:一个数组,形状为(n_classes, n_features),给出了
P
(
X
(
j
)
∣
y
=
c
k
)
P(X^{(j)}|y=c_{k})
P(X(j)∣y=ck)得经验概率分布对数值。
❐n_features_
:一个整数,每个样本中特征得数量。
方法
❐fit(X, y[, sample_weight])
:训练模型。
❐get_params([deep])
:获取模型参数。
❐partial_fit(X, y[, classes, sample_weight])
:追加训练模型。该方法主要用于大规模数据集训练,将大规模数据集分成若干小数据集,使用partial_fit方法追加训练模型。
❐predict(X)
:模型预测,返回预测值。
❐predict_log_proba(X)
:返回一个数组,数组的元素是
x
x
x预测为各类被的概率的对数值。
❐predict_proba(X)
:返回一个数组,数组的元素是
x
x
x预测为各类被的概率。
❐score(X, y[, sample_weight])
:返回预测的准确率。
❐set_params(**params)
:设置参数。
示例
from sklearn.datasets import load_digits from sklearn.model_selection import train_test_split from sklearn.naive_bayes import BernoulliNB # 读取数据集 dataset = load_digits() data, target = dataset.data, dataset.target # 拆分数据集 x_train, x_test, y_train, y_test = train_test_split(data, target, test_size=0.3, random_state=0) # 使用伯努力贝叶斯进行分类 bnbclf = BernoulliNB() bnbclf.fit(x_train, y_train) y_predict = bnbclf.predict(x_test) print("预测的文本类别为:", y_predict) print("分类分数为:", bnbclf.score(x_test, y_test))
MultinomialNB是多项式贝叶斯分类器,它假设特征条件概率分布满足多项式分布:
P
(
X
(
j
)
=
α
s
j
∣
y
=
c
k
)
=
N
k
j
+
α
N
k
j
+
α
n
P(X^{(j)}=\alpha _{s_{j}}|y=c_{k})= \frac{N_{kj}+\alpha }{N_{kj}+\alpha n}
P(X(j)=αsj∣y=ck)=Nkj+αnNkj+α
其中
α
s
j
\alpha _{s_{j}}
αsj表示特征
X
(
j
)
X^{(j)}
X(j)得取值,其取值个数为
s
j
s_{j}
sj个,
N
k
j
=
∑
i
=
1
n
I
(
y
i
=
c
k
)
N_{kj}=\sum_{i=1}^{n}I(y_{i}=c_{k})
Nkj=∑i=1nI(yi=ck),表示属于类别
c
k
c_{k}
ck的样本数量,
N
k
j
=
∑
i
=
1
n
I
(
y
i
=
c
k
,
X
(
j
)
=
a
s
j
)
N_{kj}=\sum_{i=1}^{n}I(y_{i}=c_{k},X^{(j)}=a_{s_{j}})
Nkj=∑i=1nI(yi=ck,X(j)=asj),表示属于类别
c
k
c_{k}
ck且特征
X
(
j
)
=
a
s
j
X^{(j)}=a_{s_{j}}
X(j)=asj的样本数量,
α
\alpha
α就是贝叶斯估计中
λ
\lambda
λ。
其原型为:
class sklearn.naive_bayes.MultinomialNB(*, alpha=1.0, fit_prior=True, class_prior=None)
参数
❐alpha
:一个浮点数,默认为1.0。也就是指朴素贝叶斯所说的贝叶斯估计中
λ
\lambda
λ的值,
λ
=
1
\lambda=1
λ=1时为拉普拉斯平滑。
❐fit_prior
:布尔值,默认为True.如果为True,则不去学习
P
(
y
=
c
k
)
P(y=c_{k})
P(y=ck),替代以均匀分布;如果为False,则去学习
P
(
y
=
c
k
)
P(y=c_{k})
P(y=ck)。
❐class_prior
:一个数组。它指定了每个类别的先验概率
P
(
y
=
c
1
)
,
P
(
y
=
c
2
)
,
⋯
,
P
(
y
=
c
k
)
P(y=c_{1}),P(y=c_{2}),\cdots,P(y=c_{k})
P(y=c1),P(y=c2),⋯,P(y=ck),不再从数据集中学得。
属性
❐class_count_
:一个数组,形状为(n_classes),每个类别包含得训练样本数量。
❐class_log_prior_
:一个数组,形状为(n_classes),每个类别调整后得经验概率分布对数值。
❐classes_
:一个数组,形状为(n_classes,)分类已知道得类别。
❐coef_
:一个数组,(n_classes, n_features),当类别大于2时与feature_log_prob_相同。
❐feature_count_
:一个数组,形状为(n_classes, n_features),训练过程中,每个类别每个特征遇到得样本数。
❐feature_log_prob_
:一个数组,形状为(n_classes, n_features),给出了
P
(
X
(
j
)
∣
y
=
c
k
)
P(X^{(j)}|y=c_{k})
P(X(j)∣y=ck)得经验概率分布对数值。
❐intercept_
:一个数组,(n_classes, n_features),当类别大于2时与class_log_prior_相同。
❐n_features_
:一个整数,每个样本中特征得数量。
方法
❐fit(X, y[, sample_weight])
:训练模型。
❐get_params([deep])
:获取模型参数。
❐partial_fit(X, y[, classes, sample_weight])
:追加训练模型。该方法主要用于大规模数据集训练,将大规模数据集分成若干小数据集,使用partial_fit方法追加训练模型。
❐predict(X)
:模型预测,返回预测值。
❐predict_log_proba(X)
:返回一个数组,数组的元素是
x
x
x预测为各类被的概率的对数值。
❐predict_proba(X)
:返回一个数组,数组的元素是
x
x
x预测为各类被的概率。
❐score(X, y[, sample_weight])
:返回预测的准确率。
❐set_params(**params)
:设置参数。
示例
from sklearn.datasets import load_digits from sklearn.model_selection import train_test_split from sklearn.naive_bayes import MultinomialNB # 读取数据集 dataset = load_digits() data, target = dataset.data, dataset.target # 拆分数据集 x_train, x_test, y_train, y_test = train_test_split(data, target, test_size=0.3, random_state=0) # 使用多项式贝叶斯进行分类 mnbclf = MultinomialNB() mnbclf.fit(x_train, y_train) y_predict = mnbclf.predict(x_test) print("预测的文本类别为:", y_predict) print("分类分数为:", mnbclf.score(x_test, y_test))
对于朴素贝叶斯相关的分类算法而言,一般无需花费时间在参数的调节上。
git地址:https://github.com/lingxiaaisuixin/MarchineLearning/tree/master/Bayes
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。