贝叶斯分类器_python机器学习API介绍10:多项式贝叶斯分类器
MultinomialNB是高斯貝葉斯分類(lèi)器,它假設(shè)特征的條件分布概率滿(mǎn)足高斯分布。
其原型為:
class sklearn.naive_bayes.MultinomialNB(alpha=1.0, fit_prior=True, class_prior=None)
參數(shù)說(shuō)明:
alpha:一個(gè)浮點(diǎn)數(shù),指定a值;
fit_prior:布爾值,如果為T(mén)ure,咋不去學(xué)習(xí)P(Y=Ck),替代以均勻分布;如果為False,則去學(xué)習(xí)P(Y=Ck)。
class_prior:一個(gè)數(shù)組,指定每個(gè)分類(lèi)的先驗(yàn)概率P(y=c1),P(y=c2),...p(y=ck)。如果制定了該參數(shù),則每個(gè)分類(lèi)的先驗(yàn)概率不再?gòu)臄?shù)據(jù)集中學(xué)得。
屬性說(shuō)明:
class_log_prior:一個(gè)數(shù)組對(duì)象,形式為(n_class,),給出了每個(gè)類(lèi)別調(diào)整后的經(jīng)驗(yàn)概率分布對(duì)數(shù)值。
feature_log_prob_:一個(gè)數(shù)組對(duì)象,形狀為(n_class,n_feature),給出了P(X(j)/y=Ck)的經(jīng)驗(yàn)概率分布的對(duì)數(shù)值
feature_count_:一個(gè)數(shù)組,形式為(n_class,n_feature),訓(xùn)練過(guò)程中,每個(gè)類(lèi)每個(gè)特征遇到的樣本數(shù)。
class_count_:一個(gè)數(shù)組,形狀為(n_class,),是每個(gè)類(lèi)別包含的訓(xùn)練樣本數(shù)量
方法說(shuō)明:
fit(x, y[,sample_weight):訓(xùn)練模型。
partial_fit(x,y[, classes,sample_weight):` 追加訓(xùn)練模型。該方法主要用于大規(guī)模數(shù)據(jù)集的訓(xùn)練。這個(gè)時(shí)候可以將大數(shù)據(jù)集劃分成若干個(gè)小數(shù)據(jù)集,然后在這些小數(shù)據(jù)集上連續(xù)調(diào)用partial_fit方法來(lái)訓(xùn)練模型。
predict(x):用模型進(jìn)行預(yù)測(cè),返回預(yù)測(cè)值
predict_log_proba(x):返回一個(gè)數(shù)組,數(shù)組的元素依次是x預(yù)測(cè)為各個(gè)類(lèi)別的概率的對(duì)數(shù)值。
predict_proba(x):返回一個(gè)數(shù)值,數(shù)組元素依次是x預(yù)測(cè)為各個(gè)類(lèi)別的概率值。
score(x, y[,sample_weight]):返回測(cè)試性能得分(測(cè)試分?jǐn)?shù)不超過(guò)1,但是可能為負(fù)數(shù)(當(dāng)預(yù)測(cè)效果太差的時(shí)候),score值越接近1,說(shuō)明預(yù)測(cè)效果越好)。
代碼示例說(shuō)明(代碼接上節(jié)內(nèi)容):
def test_MultinomialNB(*data):
x_train, x_test, y_train, y_test = data
cls = naive_bayes.MultinomialNB()
cls.fit(x_train, y_train)
print("MultinomialNB training score set is: {:.3f}".format(cls.score(x_train, y_train)))
print("MultinomialNB test score set is: {:.3f}".format(cls.score(x_test, y_test)))
x_train, x_test, y_train, y_test = load_digits_data()
test_MultinomialNB(x_train, x_test, y_train, y_test)
運(yùn)行上述代碼結(jié)果為:
MultinomialNB training score set is: 0.908
MultinomialNB test score set is: 0.906
由上述運(yùn)行結(jié)果可知,對(duì)訓(xùn)練集的預(yù)測(cè)分?jǐn)?shù)為0.908,對(duì)測(cè)試機(jī)的預(yù)測(cè)結(jié)果為0.906,接下來(lái)我們看一下調(diào)節(jié)alpha參數(shù)的值,給出函數(shù)如下:
def test_MultinomialNB_alpha(*data):
#alpha對(duì)預(yù)測(cè)性能的影響
x_train,x_test,y_train,y_test=data
alphas = np.logspace(-2,5,num=200)
training_scores=[]
testing_scores=[]
for alpha in alphas:
cls = naive_bayes.MultinomialNB(alpha=alpha)
cls.fit(x_train, y_train)
training_scores.append(cls.score(x_train,y_train))
testing_scores.append(cls.score(x_test,y_test))
## 將對(duì)應(yīng)的結(jié)果可視化
fig=plt.figure()
ax=fig.add_subplot(1,1,1)
ax.plot(alphas,training_scores,label="traing score")
ax.plot(alphas,testing_scores,label="testing score")
ax.set_xlabel("alphas value")
ax.set_ylabel("score value")
ax.set_ylim(0,1.0)
ax.set_title("MultinomialNB")
ax.set_xscale("log")
plt.show()
x_train, x_test, y_train, y_test = load_digits_data()
test_MultinomialNB_alpha(x_train, x_test, y_train, y_test)
運(yùn)行后其結(jié)果如圖:
多項(xiàng)式貝葉斯在不同alpha值時(shí)對(duì)應(yīng)的訓(xùn)練和測(cè)試分?jǐn)?shù)
這里為了便于觀察,我們將x軸設(shè)置為對(duì)數(shù)坐標(biāo),由此可以看出,當(dāng)alpha>100后,隨著alpha值的增長(zhǎng),其預(yù)測(cè)值在下降,這是由多項(xiàng)式貝葉斯本身的函數(shù)決定的。
總結(jié)
以上是生活随笔為你收集整理的贝叶斯分类器_python机器学习API介绍10:多项式贝叶斯分类器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 需求获取安排计划书_6分钟教你写一份融资
- 下一篇: [UWP]了解模板化控件(4):Temp