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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【机器学习】分类算法sklearn-朴素贝叶斯算法

發(fā)布時間:2024/7/5 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【机器学习】分类算法sklearn-朴素贝叶斯算法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

分類算法-樸素貝葉斯算法

  • 1. 概率基礎(chǔ)
  • 2. 樸素貝葉斯介紹
  • 3. sklearn樸素貝葉斯實(shí)現(xiàn)API
  • 4. 樸素貝葉斯算法案例

1. 概率基礎(chǔ)

概率定義為一件事情發(fā)生的可能性:扔出一個硬幣,結(jié)果頭像朝上;某天是晴天
聯(lián)合概率和條件概率“”:
聯(lián)合概率:包含多個條件,且所有條件同時成立的概率
記作:𝑃(𝐴,𝐵)
條件概率:就是事件A在另外一個事件B已經(jīng)發(fā)生條件下的發(fā)生概率
記作:𝑃(𝐴|𝐵)
特性:P(A1,A2|B) = P(A1|B)P(A2|B)
注意:此條件概率的成立,是由于A1,A2相互獨(dú)立的結(jié)果

2. 樸素貝葉斯介紹

樸素就是特征獨(dú)立

注:w為給定文檔的特征值(頻數(shù)統(tǒng)計,預(yù)測文檔提供),c為文檔類別
公式可以理解為:

其中c可以是不同類別
公式分為三個部分:
𝑃(𝐶):每個文檔類別的概率(某文檔類別詞數(shù)/總文檔詞數(shù))
𝑃(𝑊│𝐶):給定類別下特征(被預(yù)測文檔中出現(xiàn)的詞)的概率

計算方法:𝑃(𝐹1│𝐶)=𝑁𝑖/𝑁 (訓(xùn)練文檔中去計算)
𝑁𝑖為該𝐹1詞在C類別所有文檔中出現(xiàn)的次數(shù)
N為所屬類別C下的文檔所有詞出現(xiàn)的次數(shù)和
𝑃(𝐹1,𝐹2,…) 預(yù)測文檔中每個詞的概率

問題:從上面的例子我們得到娛樂概率為0,這是不合理的,如果詞頻列表里面
有很多出現(xiàn)次數(shù)都為0,很可能計算結(jié)果都為零
解決方法:拉普拉斯平滑系數(shù)

𝛼為指定的系數(shù)一般為1,m為訓(xùn)練文檔中統(tǒng)計出的特征詞個數(shù)

3. sklearn樸素貝葉斯實(shí)現(xiàn)API

sklearn.naive_bayes.MultinomialNB MultinomialNB sklearn.naive_bayes.MultinomialNB(alpha = 1.0) 樸素貝葉斯分類 alpha:拉普拉斯平滑系數(shù)

4. 樸素貝葉斯算法案例

sklearn20類新聞分類
20個新聞組數(shù)據(jù)集包含20個主題的18000個新聞組帖子
樸素貝葉斯案例流程
1、加載20類新聞數(shù)據(jù),并進(jìn)行分割
2、生成文章特征詞
3、樸素貝葉斯estimator流程進(jìn)行預(yù)估

from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.naive_bayes import MultinomialNB def naviebayes():"""樸素貝葉斯進(jìn)行文本分類:return: None"""news = fetch_20newsgroups(subset='all')# 進(jìn)行數(shù)據(jù)分割x_train, x_test, y_train, y_test = train_test_split(news.data, news.target, test_size=0.25)# 對數(shù)據(jù)集進(jìn)行特征抽取tf = TfidfVectorizer()# 以訓(xùn)練集當(dāng)中的詞的列表進(jìn)行每篇文章重要性統(tǒng)計['a','b','c','d']x_train = tf.fit_transform(x_train)print(tf.get_feature_names())x_test = tf.transform(x_test)# 進(jìn)行樸素貝葉斯算法的預(yù)測mlt = MultinomialNB(alpha=1.0)print(x_train.toarray())mlt.fit(x_train, y_train)y_predict = mlt.predict(x_test)print("預(yù)測的文章類別為:", y_predict)# 得出準(zhǔn)確率print("準(zhǔn)確率為:", mlt.score(x_test, y_test))print("每個類別的精確率和召回率:", classification_report(y_test, y_predict, target_names=news.target_names))return Noneif __name__ == "__main__":naviebayes()

樸素貝葉斯分類優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
樸素貝葉斯模型發(fā)源于古典數(shù)學(xué)理論,有穩(wěn)定的分類效率。
對缺失數(shù)據(jù)不太敏感,算法也比較簡單,常用于文本分類。
分類準(zhǔn)確度高,速度快
缺點(diǎn):
需要知道先驗(yàn)概率P(F1,F2,…|C),因此在某些時候會由于假設(shè)的先驗(yàn)
模型的原因?qū)е骂A(yù)測效果不佳。
模型的選擇與調(diào)優(yōu)
1、交叉驗(yàn)證 : 為了讓被評估的模型更加準(zhǔn)確可信.將拿到的數(shù)據(jù),分為訓(xùn)練和驗(yàn)證集。以下圖為例:將數(shù)據(jù)分成5份,其中一份作為驗(yàn)證集。然后經(jīng)過5次(組)的測試,每次都更換不同的驗(yàn)證集。即得到5組模型的結(jié)果,取平均值作為最終結(jié)果。又稱5折交叉驗(yàn)證。

2、網(wǎng)格搜索
超參數(shù)搜索-網(wǎng)格搜索
通常情況下,有很多參數(shù)是需要手動指定的(如k-近鄰算法中的K值),
這種叫超參數(shù)。但是手動過程繁雜,所以需要對模型預(yù)設(shè)幾種超參數(shù)組
合。每組超參數(shù)都采用交叉驗(yàn)證來進(jìn)行評估。最后選出最優(yōu)參數(shù)組合建
立模型。

sklearn.model_selection.GridSearchCV

sklearn.model_selection.GridSearchCV(estimator, param_grid=None,cv=None) 對估計器的指定參數(shù)值進(jìn)行詳盡搜索estimator:估計器對象 param_grid:估計器參數(shù)(dict){“n_neighbors”:[1,3,5]} cv:指定幾折交叉驗(yàn)證 fit:輸入訓(xùn)練數(shù)據(jù) score:準(zhǔn)確率 結(jié)果分析: best_score_:在交叉驗(yàn)證中測試的最好結(jié)果 best_estimator_:最好的參數(shù)模型 cv_results_:每次交叉驗(yàn)證后的測試集準(zhǔn)確率結(jié)果和訓(xùn)練集準(zhǔn)確率結(jié)果


將前面的k-近鄰算法案例改成網(wǎng)格搜索

總結(jié)

以上是生活随笔為你收集整理的【机器学习】分类算法sklearn-朴素贝叶斯算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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