日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

贝叶斯分类器_python机器学习API介绍10:多项式贝叶斯分类器

發(fā)布時(shí)間:2023/12/19 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 贝叶斯分类器_python机器学习API介绍10:多项式贝叶斯分类器 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

MultinomialNB是高斯貝葉斯分類器,它假設(shè)特征的條件分布概率滿足高斯分布。

其原型為:

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è)分類的先驗(yàn)概率P(y=c1),P(y=c2),...p(y=ck)。如果制定了該參數(shù),則每個(gè)分類的先驗(yàn)概率不再?gòu)臄?shù)據(jù)集中學(xué)得。

屬性說(shuō)明:

class_log_prior:一個(gè)數(shù)組對(duì)象,形式為(n_class,),給出了每個(gè)類別調(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è)類每個(gè)特征遇到的樣本數(shù)。

class_count_:一個(gè)數(shù)組,形狀為(n_class,),是每個(gè)類別包含的訓(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è)類別的概率的對(duì)數(shù)值。

predict_proba(x):返回一個(gè)數(shù)值,數(shù)組元素依次是x預(yù)測(cè)為各個(gè)類別的概率值。

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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。