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