1. 程式人生 > >機器學習實戰之樸素貝葉斯

機器學習實戰之樸素貝葉斯

問題1
來源:使用樸素貝葉斯過濾垃圾郵件
描述:spamTest()和textParse()讀檔案時編譯通不過
報錯:UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 199: illegal multibyte sequence
      TypeError: cannot use a string pattern on a bytes-like object
解決辦法:1、將textParse()函式中listOfTokens = re.split(r'\w*', bigString)改成
      regEx = re.compile('\\w*')
    bigString = bigString.decode('GBK', 'ignore')
    listOfTokens = regEx.split(bigString)
      2、將spamTest()函式中wordList = textParse(open('spam/%d.txt' % i).read())和wordList = textParse(open('ham/%d.txt' % i).read())改成
    wordList = textParse(open('spam/%d.txt' % i, 'rb').read())
    wordList = textParse(open('ham/%d.txt' % i, 'rb').read())
原因:①python2轉python3 ②讀的檔案中出現了無法編碼的字元,需使用ignore屬性進行忽略

問題2
來源:使用樸素貝葉斯過濾垃圾郵件
描述:spamTest()函式隨機構建訓練集和測試集時編譯通不過
報錯:TypeError: 'range' object doesn't support item deletion
解決辦法:將trainingSet = range(50)改成trainingSet = list(range(50))
原因:python3中的range返回的是range物件,不返回陣列物件

問題3
來源:使用樸素貝葉斯分類器從個人廣告中獲取區域傾向
描述:localWords()函式訪問RSS源,並寫入trainingSet時編譯通不過
解決辦法:將trainingSet = range(2 * minLen)改成trainingSet = list(range(2 * minLen))
原因:ython3中的range返回的是range物件,不返回陣列物件

相關推薦

機器學習實戰樸素

問題1 來源:使用樸素貝葉斯過濾垃圾郵件 描述:spamTest()和textParse()讀檔案時編譯通不過 報錯:UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 199: illegal

【python】機器學習實戰樸素分類

一,引言   前兩章的KNN分類演算法和決策樹分類演算法最終都是預測出例項的確定的分類結果,但是,有時候分類器會產生錯誤結果;本章要學的樸素貝葉斯分類演算法則是給出一個最優的猜測結果,同時給出猜測的概率估計值。 1 準備知識:條件概率公式 相信學過概率論的同學對於概

機器學習實戰樸素_程式碼註釋

#-*- coding: UTF-8 -*- from numpy import * def loadDataSet():#建立包含文件的訓練集和各文件對應的標籤列表 postinglist = [['my','dog','has','flea','problems',

機器學習實戰樸素

一.概述 二.理論基礎 三.文件分類 四.垃圾郵件過濾 五.從個人廣告中獲取區域傾向 六.程式碼問題總結 七.總結   一、概述 貝葉斯分類是一類分類演算法的總稱,這類演算法均以貝葉斯定理為基礎,故統稱為貝葉斯分類。本章首先介紹貝葉斯分類演算法的基礎——

機器學習實戰樸素--學習筆記

一、工作原理 我們用 p1(x,y) 表示資料點 (x,y) 屬於類別 1的概率,用 p2(x,y) 表示資料點 (x,y) 屬於類別 2的概率; 那麼對於一個新資料點 (x,y),可以用下面的規則來判斷它的類別: 如果 p1(x,y)

機器學習演算法樸素(Naive Bayes)--第二篇

引言 這篇文章主要介紹將樸素貝葉斯模型應用到文字分類任務的技巧和方法。 詞袋模型(The Bag of Words Model) 對於機器學習演算法來說,特徵的選擇是一個很重要的過程。那麼如何從文字訓練集中選出好的特徵呢?在自然語言處理中,一個常見

機器學習演算法樸素(Naive Bayes)--第一篇

引言 先前曾經看了一篇文章,一個老外程式設計師寫了一些很牛的Shell指令碼,包括晚下班自動給老婆發簡訊啊,自動衝Coffee啊,自動掃描一個DBA發來的郵件啊, 等等。於是我也想用自己所學來做一點有趣的事情。我的想法如下: 首先我寫個scrapy指令碼來

機器學習入門樸素

樸素貝葉斯法 樸素貝葉斯法是基於貝葉斯定理和特徵條件獨立假設分類方法。對於給定訓練集,首先基於特徵條件獨立性的假設,學習輸入/輸出聯合概率(計算出先驗概率和條件概率,然後求出聯合概率)。然後基於此模型,給定輸入x,利用貝葉斯概率定理求出最大的後驗概率作為輸出y

機器學習系列樸素演算法(監督學習-分類問題)

''' @description :一級分類:監督學習,二級分類:分類(離散問題),三級分類:貝葉斯演算法 演算法優點: a 樸素貝葉斯模型發源於古典數學理論,有穩定的分類效率 b 對缺失的資料不太敏感,演算法也比較簡

機器學習演算法樸素

樸素貝葉斯法是基於貝葉斯定理與特徵條件獨立假設的分類方法。演算法的核心思想就是比較概率的大小,認定概率大的類別為所屬類別下面是公式推導下面是樸素貝葉斯的python程式碼實現import numpy as np from functools import reduce de

機器學習實戰學習筆記樸素(Naive Bayes)

原理 假如郵箱中有n個單詞, 如果returnVec[i]=0代表這個單詞在這封郵件中不出現, returnVec[i]=1代表這個單詞在郵件中出現了。 設訓練集中每個郵件都有標記為是垃圾郵件和不是垃圾郵件,是垃圾郵件的分類為1,不是垃圾郵件的分類為0。 演算法原理:

李航統計學習方法樸素法(含python及tensorflow實現)

樸素貝葉斯法 樸素貝葉斯法數學表示式 後驗概率最大化的含義        樸素貝葉斯是一個生成模型。有一個強假設:條件獨立性。我們先看下樸素貝葉斯法的思想,然後看下條件獨立性具體數學表示式是什麼樣的。

機器學習筆記5——樸素演算法

在上一講中,我們瞭解到了樸素貝葉斯以及laplace平滑。這一小節中,我們將要改進樸素貝葉斯演算法。原有的樸素貝葉斯中的特徵值xi是隻取0和1兩個值,現在要對樸素貝葉斯進行一般化,以適應於特徵值取值範圍為{1,2,...,k}這種情況。 一般化過程中,對p(x

生成學習演算法樸素演算法

2  樸素貝葉斯演算法 在GDA中,特徵向量是連續的實值向量。現在讓我們討論一種不同的學習演算法,在這個演算法中,是離散值。 對於我們的激勵的例子,考慮使用機器學習建立一個電子郵件的垃圾郵件過濾器。這裡,我們希望根據它們是未經請求的商業(垃圾)電子郵件還是非垃圾郵件進行分

統計學習筆記樸素

簡介 如果說前面筆記中所介紹的方法跟統計沒什麼明顯聯絡的話,那麼這裡介紹的樸素貝葉斯就純粹在用基於統計的方法解決問題。首先樸素貝葉斯是基於貝葉斯和特徵條件獨立假設的分類方法。通過特徵條件獨立假設來學習輸入/輸出的聯合分佈(P(x,y)),同時根據貝葉斯定理預測給定輸入x的後

機器學習 】使用樸素進行文件分類

樸素貝葉斯的一般過程: 1、收集資料:任何方法 2、準備資料:需要數值型或者布林型資料 3、分析資料:有大量特徵時,繪製特徵作用不大,此時使用直方圖效果更好 4、訓練演算法:計算不同的獨立特徵的條件概率 5、測試演算法:計算錯誤率 6、使用演算法:常見的樸素貝葉斯應用是

機器學習:半樸素分類器

請點選上面公眾號,免費訂閱。 主要推送關於對演算法的思考以及應用的訊息。培養思維能力,注重過程,挖掘背後的原理,刨根問底。本著嚴謹和準確的態度,目標是撰寫實用和啟發性的文章,歡迎您的關注。 0

python機器學習庫sklearn——樸素分類器

在scikit-learn中,一共有3個樸素貝葉斯的分類演算法類。分別是GaussianNB,MultinomialNB和BernoulliNB。其中GaussianNB就是先驗為高斯分佈的樸素貝葉斯,MultinomialNB就是先驗為多項式分佈的樸素

機器學習演算法總結--樸素

這次需要總結的是樸素貝葉斯演算法,參考文章: 簡介 樸素貝葉斯是基於貝葉斯定理與特徵條件獨立假設的分類方法。 貝葉斯定理是基於條件概率來計算的,條件概率是在已知事件B發生的前提下,求解事件A發生的概率,即P(A|B)=P(AB)P(B),而貝葉

Python機器學習筆記:樸素演算法

  樸素貝葉斯是經典的機器學習演算法之一,也是為數不多的基於概率論的分類演算法。對於大多數的分類演算法,在所有的機器學習分類演算法中,樸素貝葉斯和其他絕大多數的分類演算法都不同。比如決策樹,KNN,邏輯迴歸,支援向量機等,他們都是判別方法,也就是直接學習出特徵輸出Y和特徵X之間的關係,要麼是決策函式,要麼是條