python機器學習樸素貝葉斯算法及模型的選擇和調(diào)優(yōu)詳解_第1頁
python機器學習樸素貝葉斯算法及模型的選擇和調(diào)優(yōu)詳解_第2頁
python機器學習樸素貝葉斯算法及模型的選擇和調(diào)優(yōu)詳解_第3頁
python機器學習樸素貝葉斯算法及模型的選擇和調(diào)優(yōu)詳解_第4頁
python機器學習樸素貝葉斯算法及模型的選擇和調(diào)優(yōu)詳解_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第python機器學習樸素貝葉斯算法及模型的選擇和調(diào)優(yōu)詳解目錄一、概率知識基礎(chǔ)1.概率2.聯(lián)合概率3.條件概率二、樸素貝葉斯1.樸素貝葉斯計算方式2.拉普拉斯平滑3.樸素貝葉斯API三、樸素貝葉斯算法案例1.案例概述2.數(shù)據(jù)獲取3.數(shù)據(jù)處理4.算法流程5.注意事項四、分類模型的評估1.混淆矩陣2.評估模型API3.模型選擇與調(diào)優(yōu)①交叉驗證②網(wǎng)格搜索五、以knn為例的模型調(diào)優(yōu)使用方法1.對超參數(shù)進行構(gòu)造2.進行網(wǎng)格搜索3.結(jié)果查看

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

1.概率

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

2.聯(lián)合概率

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

3.條件概率

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

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

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

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

二、樸素貝葉斯

1.樸素貝葉斯計算方式

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

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

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

計算方法:

P(F1|C)=N(i)/N(訓練集中計算)

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ā)展'|科技)

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

2.拉普拉斯平滑

3.樸素貝葉斯API

sklearn.naive_bayes.MultinomialNB

三、樸素貝葉斯算法案例

1.案例概述

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

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

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

導入數(shù)據(jù)庫:importsklearn.datasetsasdt

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

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

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

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

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

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

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

測試集的特征提取,只需要調(diào)用transform,因為要使用訓練集的標準,并且在上一步已經(jīng)fit過得出訓練集的標準了,測試集直接使用就行。

4.算法流程

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

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

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

5.注意事項

樸素貝葉斯算法的準確率,是由訓練集來決定的,不需要調(diào)參。訓練集誤差大,結(jié)果肯定不好。因為算的方式固定,并且沒有一個超參數(shù)可供調(diào)整。

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

四、分類模型的評估

1.混淆矩陣

評估標準有數(shù)種,其一是準確率,也就是對預測的目標值和提供的目標值一一對比,計算準確率。

我們也有其他更通用也更好用的評估標準,即精確率和召回率。精確率和召回率是基于混淆矩陣計算的。

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

F1分類標準:

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

2.評估模型API

sklearn.metricx.classification_report

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

①交叉驗證

交叉驗證是為了讓被評估的模型更加準確可信,方法如下:

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

第一份作為驗證集,其他作為訓練集,得出一個準確率,模型1

第二份作為驗證集,其他作為訓練集,得出一個準確率,模型2

......

直到每一份都過一遍,得出n個模型的準確率

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

若分為四等分,則叫做“4折交叉驗證”。

②網(wǎng)格搜索

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

網(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)將算法實例化:knn=KNeighborsClassifier()

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

因為算法中需要用到的超參數(shù)的名字就叫做'n_neighbors',所以直接按名字指定超參數(shù)選擇范圍。若有第二個超參數(shù),在后面添加字典元素即可。

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

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

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

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

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

gc.fit(x_train,y_train)

3.結(jié)果查看

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

gc.sc

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論