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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

机器学习贝叶斯模型

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

貝葉斯模型

1、什么是貝葉斯:

? 貝葉斯是用來描述兩個條件概率直接的關系

? 貝葉斯定理是關于隨機事件A和B的條件概率(或邊緣概率)的一則定理。其中P(A|B)是在B發(fā)生的情況下A發(fā)生的可能性。

? 機器學習中:

? 貝葉斯方法把計算“具有某特征的條件下屬于某類”的概率轉(zhuǎn)換成需要計算“屬于某類的條件下具有某特征”的概率,屬于監(jiān)督學習。

? 舉例說明:

? 一座別墅在過去的 20 年里一共發(fā)生過 2 次被盜,別墅的主人有一條狗,狗平均每周晚上叫 3 次,在盜賊入侵時狗叫的概率被估計為 0.9,問題是:在狗叫的時候發(fā)生入侵的概率是多少?
我們假設 A 事件為狗在晚上叫,B 為盜賊入侵,則以天為單位統(tǒng)計,P(A) = 3/7,P(B) = 2/(20365) = 2/7300,P(A|B) = 0.9,按照公式很容易得出結(jié)果:P(B|A) = 0.9(2/7300) / (3/7) = 0.00058

2、樸素貝葉斯及原理

? 樸素的概念:獨立性假設,假設各個特征之間是獨立不相關的

? 樸素貝葉斯的思想基礎是這樣的:對于給出的待分類樣本特征x,求解在此樣本出現(xiàn)的條件下各個類別出現(xiàn)的概率,哪個最大,就認為此待分類樣本屬于哪個類別。

3、高斯分布樸素貝葉斯

? 高斯分布就是正態(tài)分布

? 用途:

? 用于一般分類問題

? 特征值為連續(xù)型變量:

? 期望連續(xù)型的數(shù)據(jù)符合正態(tài)分布的

? 高斯模型假設某一特征屬于某一類別的觀測值符合高斯分布,比如身高小于160,160~170和170以上

4、多項式分布樸素貝葉斯

? 用途:適用于文本數(shù)據(jù)(特征表示的是次數(shù),例如某個詞語的出現(xiàn)次數(shù)

? 特點:文本分類,特征是單詞,值是單詞的出現(xiàn)次數(shù)

5、伯努利分布樸素貝葉斯

? 用途:適用于伯努利分布,也適用于文本數(shù)據(jù)(此時特征表示的是是否出現(xiàn),例如某個詞語的出現(xiàn)為1,不出現(xiàn)為0)

? 特點:特征值取bool類型,文本分類中表示一個值(單詞)有沒有出現(xiàn)過

? 伯努利分布:伯努利分布指的是對于隨機變量X有, 參數(shù)為p(0<p<1),如果它分別以概率p和1-p取1和0為值。

? 伯努利分布是一個離散型機率分布,是N=1時二項分布的特殊情況

? 伯努利分布與多項式分布:伯努利分布絕大多數(shù)情況下表現(xiàn)不如多項式分布,但有的時候伯努利分布表現(xiàn)得要比多項式分布要好,尤其是對于小數(shù)量級的文本數(shù)據(jù)

6、樸素貝葉斯模型的基本使用

? 樸素貝葉斯是分類模型

# 模型的導入,分別導入的是多項式分布、高斯分布、伯努利分布 from sklearn.naive_bayes import MultinomialNB, GaussianNB, BernoulliNB # 實例化模型 mnb = MultinomialNB() gnb = GaussianNB() bnb = BernoulliNB() # 訓練數(shù)據(jù)以及預測數(shù)據(jù) mnb.fit(train,target) mnb.predict(X_test) # 泛化誤差與經(jīng)驗誤差 mnb.score(X_test,y_test) mnb.score(X_train,y_train)gnb.fit(train,target) bnb.fit(train,target)
7、詞頻集轉(zhuǎn)換

? 樸素貝葉斯模型中最常用的是多項式分布樸素貝葉斯模型,而該模型的特點是:適用于文本數(shù)據(jù)(特征表示的是次數(shù),例如某個詞語的出現(xiàn)次數(shù)

? 所以該模型處理的數(shù)據(jù)經(jīng)常是文本文件,并且統(tǒng)計特征的次數(shù)(文本中單詞出現(xiàn)的次數(shù)),所以在處理數(shù)據(jù)時往往需要將文本中的單詞按需獲得并統(tǒng)計次數(shù)。機器學習sklearn包含了用于做“詞頻集”轉(zhuǎn)換的幾類庫,具體使用如下:

# 詞頻集轉(zhuǎn)換 # 導包,CountVectorizer,TfidfTransformer往往一起使用,而TfidfVectorizer是他倆功能的綜合,能單獨使用 from sklearn.feature_extraction.text import CountVectorizer,TfidfVectorizer, TfidfTransformer

1、CountVectorizer()

txt = ['hello world hello MR.zhang','world cup hello world','cup cup hello cup' ] # 創(chuàng)建實例對象, # 并將數(shù)據(jù)進行詞頻的轉(zhuǎn)換,具體操作如下(即統(tǒng)計數(shù)據(jù)中的每行中每個單詞出現(xiàn)的次數(shù)) cv = CountVectorizer() matrix = cv.fit_transform(txt)

? CountVectorizer工作原理

? 1、將數(shù)據(jù)集中所有出現(xiàn)過的單詞作為獨立的特征,

? 2、上面的txt集中,用逗號隔開每一組數(shù)據(jù),將每組數(shù)據(jù)可理解為單獨的一行

? 3、統(tǒng)計每一組數(shù)據(jù)集中,每個單詞出現(xiàn)的次數(shù),記錄在行和列對應的

2、TfidfTransformer()

# 實例化TfidfTransformer(),計算逆文本頻率指數(shù)(ft-idf) tf = TfidfTransformer() tf_data = tf.fit_transform(matrix)

? TF-IDF是一種用于信息檢索與數(shù)據(jù)挖掘的常用加權(quán)技術,是一種統(tǒng)計方法。字詞的重要性隨著它在文件中出現(xiàn)的次數(shù)成正比增加

? **TF-IDF基本思想:**如果某個詞或短語在一篇文章中出現(xiàn)的頻率TF高,并且在其他文章中很少出現(xiàn),則認為此詞或者短語具有很好的類別區(qū)分能力,適合用來分類。

# 將數(shù)據(jù)集轉(zhuǎn)換成DataFrame類型,進一步進行數(shù)據(jù)分析 tf_df = DataFrame(data=tf_data.toarray(), columns=cv.get_feature_names()) tf_df.head()

? 至此,文本數(shù)據(jù)基本準備完畢,則可用貝葉斯模型進行建模工作

3、TfidfVectorizer()

? TfidfVectorizer是CountVectorizer和TfidfTransformer工作的一個綜合過程

# tf對象一步到位,直接將數(shù)據(jù)轉(zhuǎn)換成TF-IDF tf = TfidfVectorizer() data = tf.fit_transform(txt).toarray() DataFrame(data=data, columns=tf.get_feature_names())

4、文本數(shù)據(jù)轉(zhuǎn)換過程

? 1、確認停用詞、詞組

? 2、詞頻向量轉(zhuǎn)換(TF-IDF)TfidfTransformer CounterVectorizer 或者 TfidfVectorizer()

? 3、訓練預測

8、結(jié)巴分詞(jieba)

1、使用背景

? 在進行詞頻集的轉(zhuǎn)換時,只能轉(zhuǎn)換英語文本,因為英文單詞之間是用空格隔開的,會默認用分開。但是漢語不行,所以中文文本類數(shù)據(jù)集不能使用以上詞頻分詞的方法,此處引入專門用于中文詞頻分詞的結(jié)巴分詞

? 安裝:pin install jieba

? 導入:import jieba

2、分詞模式

? 結(jié)巴中文分詞支持的三種分詞模式包括:

? (1) 精確模式:試圖將句子最精確地切開,適合文本分析;

? (2) 全模式:把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義問題;

? (3) 搜索引擎模式:在精確模式的基礎上,對長詞再次切分,提高召回率,適合用于搜索引擎分詞。

3、分詞方法

? 1)jieba.cut() 生成迭代器對象

? 2)jieba.lcut() 生成列表對象(常用)

? 3)jieba.cut_for_search() 搜索引擎模式

? 參數(shù):

? cut_all=True 全模式

? cut_all=False 精確模式(常用)

4、新詞識別

? jieba分詞可以識別一些詞典中不存在的詞。但并不一定都會識別出來。比如“蛤跟”,為了解決這個問題,jieba中可以自定義一個詞典,使得分詞過程中避免將這些詞分開

? 自定義詞典

# 將自定義的文辭文件導入,并使用 jieba.load_userdict('worddic.txt') # 進行分詞,并將列表里的元素用“/”拼接起來 "/".join(jieba.lcut(text))

5、關鍵詞提取

? 用于提取文本中重要的一些詞

import jieba.analyse jieba.analyse.extract_tags(sentence, topK)
  • sentence 待提取的文本
  • topK 返回幾個TF-IDF權(quán)重最大的關鍵詞,默認值為20個
    • TF: 詞頻,即某個詞在文檔中出現(xiàn)的次數(shù)
    • IDF:逆文檔頻率,在詞頻相同的基礎上,常見的詞分配較小的權(quán)重,不常見的詞分配較大的權(quán)重,這個權(quán)重就是逆文檔頻率。
    • TF-IDF:就是TF和IDF的乘積,這個值越大,說明對應的詞越重要

6、去除停用詞

? 在信息檢索中,為節(jié)省存儲空間和提高搜索效率,在處理自然語言數(shù)據(jù)(或文本)之前或之后會自動過濾掉某些字或詞,比如“的”、“是”、“而且”、“但是”、”非常“等。這些字或詞即被稱為Stop Words(停用詞)。

text = "在京教中心,沒有什么女朋友是一頓燒烤哄不好的。" stop_words = ["在",",","的","是","。"] word_list = jieba.lcut(text) # 用message將去除停用詞后的文本拼接起來 message = "" for word in word_list:if word not in stop_words:message += word

7、使用sklearn計算TF-IDF值

? 分詞完成的數(shù)據(jù)集message就可以用詞頻集進行轉(zhuǎn)換進入后期的預測工作

9、詞云的展示

? “詞云”就是對網(wǎng)絡文本中出現(xiàn)頻率較高的“關鍵詞”予以視覺上的突出,形成“關鍵詞云層”或“關鍵詞渲染”,從而過濾掉大量的文本信息,使瀏覽網(wǎng)頁者只要一眼掃過文本就可以領略文本的主旨。

? 安裝:pin install wordcloud

? 導入:import wordcloud

1、詞頻統(tǒng)計

# 詞頻統(tǒng)計(數(shù)據(jù)加載),word_list是經(jīng)過詞頻轉(zhuǎn)換的數(shù)據(jù)集 counter = collections.Counter(word_list) # 用來提取數(shù)據(jù)集中最高頻出現(xiàn)的n個詞。 count_top10 = counter.most_common(n=10) count_top10

2、加載詞云顯示對象

# 加載詞云顯示對象(格式的加載)wc = wordcloun.WordClound(font_path="自定義字體的路徑", max_words=30, # 字體的個數(shù)的上限max_font_size=100, # 字體的最大字號min_font_size=10,mask="設置背景圖片") # 顯示會按此背景圖片的樣式顯示

3、加載資源

collections庫,這個庫是python 自帶的

# 導入 import collections # 字(詞)頻統(tǒng)計,dict(s)將s轉(zhuǎn)換為字典類型。 counter = collections.Counter(dict(s)) wc.generate_from_frequencies(詞頻的統(tǒng)計量Counter對象) # 加載文字資源 wc.recolor(color_func=image_colors) # 加載顏色資源,其中image_colors的獲取如下: # 解析背景圖片顏色 image_colors = wordcloud.ImageColorGenerator(plt.imread('圖片路徑'))

4、顯示詞云

plt.imshow()

總結(jié)

以上是生活随笔為你收集整理的机器学习贝叶斯模型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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