最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python機(jī)器學(xué)習(xí)樸素貝葉斯算法及模型的選擇和調(diào)優(yōu)詳解

 更新時(shí)間:2021年11月12日 15:47:34   作者:Swayzzu  
這篇文章主要為大家介紹了python機(jī)器學(xué)習(xí)樸素貝葉斯及模型的選擇和調(diào)優(yōu)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步

一、概率知識基礎(chǔ)

1.概率

概率就是某件事情發(fā)生的可能性。

2.聯(lián)合概率

包含多個(gè)條件,并且所有條件同時(shí)成立的概率,記作:P(A, B) = P(A) * P(B)

3.條件概率

事件A在另外一個(gè)事件B已經(jīng)發(fā)生的條件下的發(fā)生概率,記作:P(A|B)

條件概率的特性:P(A1,A2|B) = P(A1|B)P(A2|B)

注意:此條件概率的成立,是由于A1,A2相互獨(dú)立的結(jié)果

樸素貝葉斯的原理就是,對于每一個(gè)樣本,算出屬于每一個(gè)類別的概率,歸為概率最高的那一類。

二、樸素貝葉斯

1.樸素貝葉斯計(jì)算方式

直接代入實(shí)際例子,各部分解釋如下:

P(C) = P(科技):科技文檔類別的概率(科技文檔數(shù) / 總文檔數(shù))

P(W|C) = P(‘智能',‘發(fā)展'|科技):在科技文檔這一類文章中,‘智能'與‘發(fā)展'這兩個(gè)特征詞出現(xiàn)的概率。注意:‘智能',‘發(fā)展'屬于被預(yù)測文檔中出現(xiàn)的詞,科技文檔中可能會有更多特征詞,但給定的文檔并不一定全部包含。因此,給定的文檔包含了哪些,就使用哪些。

計(jì)算方法:

P(F1|C) = N(i)/N (訓(xùn)練集中計(jì)算)

N(i)是該F1詞在C類別所有文檔中出現(xiàn)的次數(shù)

N為所屬類別C下的文檔所有詞出現(xiàn)的次數(shù)和

P(‘智能'|科技) = ‘智能'在所有科技類文檔中出現(xiàn)的次數(shù) / 科技類文檔下所有出現(xiàn)的詞次數(shù)和

則P(F1,F2...|C) = P(F1|C) * P(F2|C)

P(‘智能',‘發(fā)展'|科技) = P(‘智能'|科技) * P(‘發(fā)展'|科技)

這樣就可以計(jì)算出基于被預(yù)測文檔中的特征詞,被預(yù)測文檔屬于科技的概率。同樣的方法計(jì)算其他類型的概率。哪個(gè)高就算哪個(gè)。

2.拉普拉斯平滑

3.樸素貝葉斯API

sklearn.naive_bayes.MultinomialNB

三、樸素貝葉斯算法案例

1.案例概述

本案例的數(shù)據(jù)是來自于sklearn中的20newsgroups數(shù)據(jù),通過提取文章中的特征詞,使用樸素貝葉斯方法,對被預(yù)測文章進(jìn)行計(jì)算,通過得出的概率來確定文章屬于哪一類。

大致步驟如下:首先將文章分成兩類,一類作為訓(xùn)練集,一類作為測試集。接下來使用tfidf分別對訓(xùn)練集以及測試集文章進(jìn)行特征抽取,這樣就生成了訓(xùn)練集測試集的x,接下來可以直接調(diào)用樸素貝葉斯算法,將訓(xùn)練集數(shù)據(jù)x_train, y_train導(dǎo)入進(jìn)去,訓(xùn)練模型。最后使用訓(xùn)練好的模型來測試即可。

2.數(shù)據(jù)獲取

導(dǎo)入數(shù)據(jù)庫:import sklearn.datasets as dt

導(dǎo)入數(shù)據(jù):news = dt.fetch_20newsgroups(subset='all')

3.數(shù)據(jù)處理

分割使用的方法和knn中的一樣。另外,從sklearn中導(dǎo)入的數(shù)據(jù),都可以直接調(diào)用 .data獲取數(shù)據(jù)集,調(diào)用.target獲取目標(biāo)值。

分割數(shù)據(jù):x_train, x_test, y_train, y_test = train_test_split(news.data, news.target, test_size=0.25)

特征值提取方法實(shí)例化:tf = TfIdfVectorizer()

訓(xùn)練集數(shù)據(jù)特征值提?。簒_train = tf.fit_transform(x_train)

測試集數(shù)據(jù)特征值提?。簒_test = tf.transform(x_test)

測試集的特征提取,只需要調(diào)用transform,因?yàn)橐褂糜?xùn)練集的標(biāo)準(zhǔn),并且在上一步已經(jīng)fit過得出訓(xùn)練集的標(biāo)準(zhǔn)了,測試集直接使用就行。

4.算法流程

算法實(shí)例化:mlt = MultinomialNB(alpha=1.0)

算法訓(xùn)練:mlt.fit(x_train, y_train)

預(yù)測結(jié)果:y_predict = mlt.predict(x_test)

5.注意事項(xiàng)

樸素貝葉斯算法的準(zhǔn)確率,是由訓(xùn)練集來決定的,不需要調(diào)參。訓(xùn)練集誤差大,結(jié)果肯定不好。因?yàn)樗愕姆绞焦潭ǎ⑶覜]有一個(gè)超參數(shù)可供調(diào)整。

樸素貝葉斯的缺點(diǎn):假設(shè)了文檔中一些詞和另外一些詞是獨(dú)立的,相互沒聯(lián)系。并且是在訓(xùn)練集中進(jìn)行的詞統(tǒng)計(jì),會對結(jié)果造成干擾,訓(xùn)練集越好,結(jié)果越好,訓(xùn)練集越差,結(jié)果越差。

四、分類模型的評估

1.混淆矩陣

評估標(biāo)準(zhǔn)有數(shù)種,其一是準(zhǔn)確率,也就是對預(yù)測的目標(biāo)值和提供的目標(biāo)值一一對比,計(jì)算準(zhǔn)確率。

我們也有其他更通用也更好用的評估標(biāo)準(zhǔn),即精確率和召回率。精確率和召回率是基于混淆矩陣計(jì)算的。

一般情況下我們只關(guān)注召回率。

F1分類標(biāo)準(zhǔn):

根據(jù)以上式子,使用精確率召回率,可計(jì)算出F1-score,該結(jié)果可反應(yīng)模型的穩(wěn)健性。

2.評估模型API

sklearn.metricx.classification_report

3.模型選擇與調(diào)優(yōu)

①交叉驗(yàn)證

交叉驗(yàn)證是為了讓被評估的模型更加準(zhǔn)確可信,方法如下:

>>將所有數(shù)據(jù)分成n等份

>>第一份作為驗(yàn)證集,其他作為訓(xùn)練集,得出一個(gè)準(zhǔn)確率,模型1

>>第二份作為驗(yàn)證集,其他作為訓(xùn)練集,得出一個(gè)準(zhǔn)確率,模型2

>>......

>>直到每一份都過一遍,得出n個(gè)模型的準(zhǔn)確率

>>對所有的準(zhǔn)確率求平均值,我們就得到了最終更為可信的結(jié)果。

若分為四等分,則叫做“4折交叉驗(yàn)證”。

②網(wǎng)格搜索

網(wǎng)格搜索主要是和交叉驗(yàn)證同時(shí)使用,用來調(diào)參數(shù)。比如K-近鄰算法中有超參數(shù)k,需要手動指定,比較復(fù)雜,所以需要對模型預(yù)設(shè)幾種超參數(shù)組合,每組超參數(shù)都采用交叉驗(yàn)證來進(jìn)行評估,最后選出最優(yōu)的參數(shù)組合建立模型。(K-近鄰算法就一個(gè)超參數(shù)k,談不上組合,但是如果算法有2個(gè)或以上超參數(shù),就進(jìn)行組合,相當(dāng)于窮舉法)

網(wǎng)格搜索API:sklearn.model_selection.GridSearchCV

五、以knn為例的模型調(diào)優(yōu)使用方法

假設(shè)已經(jīng)將數(shù)據(jù)以及特征處理好,并且得到了x_train, x_test, y_train, y_test,并且已經(jīng)將算法實(shí)例化:knn = KNeighborsClassifier()

1.對超參數(shù)進(jìn)行構(gòu)造

因?yàn)樗惴ㄖ行枰玫降某瑓?shù)的名字就叫做'n_neighbors',所以直接按名字指定超參數(shù)選擇范圍。若有第二個(gè)超參數(shù),在后面添加字典元素即可。

params = {'n_neighbors':[5,10,15,20,25]}

2.進(jìn)行網(wǎng)格搜索

輸入的參數(shù):算法(估計(jì)器),網(wǎng)格參數(shù),指定幾折交叉驗(yàn)證

gc = GridSearchCV(knn, param_grid=params, cv=5)

基本信息指定好后,就可以把訓(xùn)練集數(shù)據(jù)fit進(jìn)去

gc.fit(x_train, y_train)

3.結(jié)果查看

網(wǎng)格搜索算法中,有數(shù)種方法可以查看準(zhǔn)確率、模型、交叉驗(yàn)證結(jié)果、每一次交叉驗(yàn)證后的結(jié)果。

gc.score(x_test, y_test) 返回準(zhǔn)確率

gc.best_score_ 返回最高的準(zhǔn)確率

gc.best_estimator_ 返回最好的估計(jì)器(返回的時(shí)候會自動帶上所選擇的超參數(shù))

以上就是python機(jī)器學(xué)習(xí)樸素貝葉斯及模型的選擇和調(diào)優(yōu)詳解的詳細(xì)內(nèi)容,更多關(guān)于樸素貝葉斯及模型的選擇和調(diào)優(yōu)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python3中替換python2中cmp函數(shù)的實(shí)現(xiàn)

    python3中替換python2中cmp函數(shù)的實(shí)現(xiàn)

    這篇文章主要介紹了python3替換python2中cmp函數(shù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Python走樓梯問題解決方法示例

    Python走樓梯問題解決方法示例

    這篇文章主要介紹了Python走樓梯問題解決方法,結(jié)合實(shí)例形式分析了Python基于遞歸與迭代思想解決走樓梯問題的相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • pandas 數(shù)據(jù)實(shí)現(xiàn)行間計(jì)算的方法

    pandas 數(shù)據(jù)實(shí)現(xiàn)行間計(jì)算的方法

    今天小編就為大家分享一篇pandas 數(shù)據(jù)實(shí)現(xiàn)行間計(jì)算的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Python自動錄入ERP系統(tǒng)數(shù)據(jù)

    Python自動錄入ERP系統(tǒng)數(shù)據(jù)

    這篇文章主要介紹了Python如何自動錄入ERP系統(tǒng)數(shù)據(jù),用Python解決Excel問題的最佳方法,文章中有詳細(xì)的代碼示例,需要的朋友可以參考閱讀
    2023-04-04
  • Python設(shè)計(jì)模式中的策略模式詳解

    Python設(shè)計(jì)模式中的策略模式詳解

    策略模式屬于Python-設(shè)計(jì)模式中行為模式之一,該模式定義了一系列算法,并將每個(gè)算法封裝起來,使它們可以相互替換。本文將通過示例詳細(xì)講解這一模式,需要的可以參考一下
    2023-02-02
  • 詳解Python如何輕松實(shí)現(xiàn)定時(shí)執(zhí)行任務(wù)

    詳解Python如何輕松實(shí)現(xiàn)定時(shí)執(zhí)行任務(wù)

    這篇文章主要為大家詳細(xì)介紹了Python如何在Windows下不用任務(wù)管理器就實(shí)現(xiàn)輕松定時(shí)執(zhí)行任務(wù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以嘗試一下
    2022-10-10
  • 一文輕松了解Python中類的繼承

    一文輕松了解Python中類的繼承

    類的繼承可以看成對類的屬性和方法的重用,能夠大大的減少代碼量,下面這篇文章主要給大家介紹了關(guān)于Python中類的繼承的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • pytorch中的torch.nn.Conv2d()函數(shù)圖文詳解

    pytorch中的torch.nn.Conv2d()函數(shù)圖文詳解

    這篇文章主要給大家介紹了關(guān)于pytorch中torch.nn.Conv2d()函數(shù)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-02-02
  • Python根據(jù)歐拉角求旋轉(zhuǎn)矩陣的實(shí)例

    Python根據(jù)歐拉角求旋轉(zhuǎn)矩陣的實(shí)例

    今天小編就為大家分享一篇Python根據(jù)歐拉角求旋轉(zhuǎn)矩陣的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python題解LeetCode303區(qū)域和檢索示例詳解

    python題解LeetCode303區(qū)域和檢索示例詳解

    這篇文章主要為大家介紹了python題解LeetCode303區(qū)域和檢索示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12

最新評論

拜城县| 山东省| 鄂伦春自治旗| 临夏县| 广灵县| 虞城县| 庄浪县| 大姚县| 沁水县| 九龙城区| 德惠市| 雅江县| 黎平县| 榆中县| 渝中区| 宁强县| 长春市| 文化| 五莲县| 沽源县| 米泉市| 黄骅市| 晴隆县| 若尔盖县| 靖州| 滨海县| 邵阳县| 丹寨县| 蓬莱市| 平舆县| 田东县| 桂东县| 霸州市| 象州县| 永春县| 阳曲县| 荔浦县| 屏南县| 济宁市| 汉沽区| 尤溪县|