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