本文實例講述了PHP實現(xiàn)機器學(xué)習(xí)之樸素貝葉斯算法。分享給大家供大家參考,具體如下:
機器學(xué)習(xí)已經(jīng)在我們的生活中變得隨處可見了。比如從你在家的時候溫控器開始工作到智能汽車以及我們口袋中的智能手機。機器學(xué)習(xí)看上去已經(jīng)無處不在并且是一個非常值得探索的領(lǐng)域。但是什么是機器學(xué)習(xí)呢?通常來說,機器學(xué)習(xí)就是讓系統(tǒng)不斷的學(xué)習(xí)并且對新的問題進(jìn)行預(yù)測。從簡單的預(yù)測購物商品到復(fù)雜的數(shù)字助理預(yù)測。
在這篇文章我將會使用樸素貝葉斯算法Clasifier作為一個類來介紹。這是一個簡單易于實施的算法,并且可給出滿意的結(jié)果。但是這個算法是需要一點統(tǒng)計學(xué)的知識去理解的。在文章的最后部分你可以看到一些實例代碼,甚至自己去嘗試著自己做一下你的機器學(xué)習(xí)。
起步
那么,這個Classifier是要用來實現(xiàn)什么功能呢?其實它主要是用來判斷給定的語句是積極地還是消極的。比如,“Symfony is the best”是一個積極的語句,“No Symfony is bad”是一個消極的語句。所以在給定了一個語句之后,我想讓這個Classifier在我不給定一個新的規(guī)則的情況就返回一個語句類型。
我給Classifier命名了一個相同名稱的類,并且包含一個guess方法。這個方法接受一個語句的輸入,并且會返回這個語句是積極的還是消極的。這個類就像下面這樣:
class Classifier { public function guess($statement) {} }
我更喜歡使用枚舉類型的類而不是字符串作為我的返回值。我將這個枚舉類型的類命名為Type,并且包含兩個常量:一個POSITIVE,一個NEGATIVE。這兩個常量將會當(dāng)做guess方法的返回值。
class Type { const POSITIVE = 'positive'; const NEGATIVE = 'negative'; }
初始化工作已經(jīng)完成,接下來就是要編寫我們的算法進(jìn)行預(yù)測了。
樸素貝葉斯
樸素貝葉斯算法是基于一個訓(xùn)練集合工作的,根據(jù)這個訓(xùn)練集從而做出相應(yīng)的預(yù)測。這個算法運用了簡單的統(tǒng)計學(xué)以及一點數(shù)學(xué)去進(jìn)行結(jié)果的計算。比如像下面四個文本組成的訓(xùn)練集合:
語句 | 類型 |
Symfony is the best | Positive |
PhpStorm is great | Positive |
Iltar complains a lot | Negative |
No Symfony is bad | Negative |